Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明

Ubuntu 上の Apache で SSL (https 証明書) を設定する正しい方法の詳細な説明

まず、Alibaba Cloud の公式チュートリアルをご覧ください。

ファイルの説明:

1. 証明書ファイル xxxxxx.pem には 2 つのセクションが含まれています。いずれのセクションも削除しないでください。

2. CSR が証明書システムによって作成された場合は、証明書の秘密キー ファイル xxxxxxxx.key、証明書の公開キー ファイル public.pem、および証明書チェーン ファイル chain.pem も含まれます。

(1)Apacheインストールディレクトリの下にcertディレクトリを作成し、ダウンロードしたすべてのファイルをcertディレクトリにコピーします。証明書を申請する際に CSR ファイルを自分で作成した場合は、対応する秘密鍵ファイルを cert ディレクトリに配置し、xxxxxxxx.key という名前を付けてください。

(2) Apacheインストールディレクトリのconfディレクトリにあるhttpd.confファイルを開き、次の内容を見つけて「#」を削除します。

#LoadModule ssl_module modules/mod_ssl.so (見つからない場合は、opensslプラグインがコンパイルされているかどうかを確認してください)
#conf/extra/httpd-ssl.conf をインクルードします

(3) Apacheインストールディレクトリのconf/extra/httpd-ssl.confファイル(オペレーティングシステムとインストール方法によってはconf.d/ssl.confの場合もあります)を開き、設定ファイル内で次の設定ステートメントを検索します。

# SSL プロトコルサポートプロトコルを追加し、安全でないプロトコルを削除します SSLProtocol all -SSLv2 -SSLv3
# 暗号化スイートを次のように変更します SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder オン
# 証明書公開鍵設定 SSLCertificateFile cert/public.pem
# 証明書の秘密鍵の設定 SSLCertificateKeyFile cert/xxxxxxx.key
# 証明書チェーンの設定。属性が '#' 文字で始まる場合は削除してください。SSLCertificateChainFile cert/chain.pem

(4)Apacheを再起動します。

(5)https経由でサイトにアクセスし、サイト証明書のインストールと構成をテストします。証明書の不信の問題が発生した場合は、ヘルプビデオをご覧ください。

ただし、これはあくまで参考値です。 Ubuntu では、apt を使用して Apache をインストールしましたが、httpd.conf ファイルはなく、apache2.conf ファイルのみがあります。このファイルは httpd.conf に似ており、次のコメントが含まれています。

# 複数のファイルに分割され、概説した構成階層を形成します
# 以下はすべて /etc/apache2/ ディレクトリにあります:
#
Apache2 の
# |-- apache2.conf
# | `-- ポート.conf
# |-- モッズが有効
# | |-- *.ロード
# | `-- *.conf
# |-- conf が有効
# | `-- *.conf
# `-- サイトが有効
# `-- *.conf
#

このバージョンの Apache では、設定ファイルが他の小さなファイルに分散されており、構造は上記のようになります。必要に応じて、独自の httpd.conf を作成して組み込むこともできます。

https の構成に焦点を当てましょう。最初のステップは、外部環境のポート 443 が開いていることを確認することです。

2 番目のステップは、ssl_module がインストールされていることを確認することです。そうでない場合は、apt-get install openssl を実行してください。いくつかの依存関係が必要になる場合がありますが、いずれも軽微な問題です。

次にports.confを開きます。次の文が必須です。

<IfModule ssl_module>
 443を聴く
</モジュール>
 
<IfModule mod_gnutls.c>
 443を聴く
</モジュール>

次にmods-availableを開き、ssl.confとssl.loadを見つけます。

ssl.load は次のようになります:

# 依存: setenvif mime socache_shmcb
ロードモジュール ssl_module /usr/lib/apache2/modules/mod_ssl.so
ssl.conf は次のようになります:
<IfModule mod_ssl.c>
 
 # 疑似乱数ジェネレーター (PRNG):
 # SSL ライブラリの PRNG をシードするための 1 つ以上のソースを構成します。
 # シードデータは、良好なランダム品質である必要があります。
 # 警告! 一部のプラットフォームでは、エントロピーが十分でない場合、/dev/random がブロックします
 # が利用可能です。つまり、/dev/randomデバイスは使用できなくなります
 # 非常に長い接続時間につながるため(
 # より多くのエントロピーを利用できるようにする必要がある)。しかし、通常、
 # プラットフォームは、/dev/urandomデバイスも提供しているが、
 # ブロック。利用可能な場合は、代わりにこれを使用してください。mod_sslユーザーガイドを読む
 # 詳細についてはマニュアルを参照してください。
 #
 SSLRandomSeed スタートアップ組み込み
 SSLRandomSeed 起動ファイル:/dev/urandom 512
 SSLRandomSeed 接続組み込み
 SSLRandomSeed 接続ファイル:/dev/urandom 512
 
 ##
 ## SSL グローバルコンテキスト
 ##
 ## このコンテキストのすべてのSSL設定は、
 ## メイン サーバーとすべての SSL 対応仮想ホスト。
 ##
 
 #
 # 証明書とCRLをダウンロードするためのMIMEタイプ
 #
 アプリケーション/x-x509-ca-cert.crt にタイプを追加します
 AddType アプリケーション/x-pkcs7-crl .crl
 
 # パスフレーズダイアログ:
 # パスフレーズ収集プロセスを構成します。
 # フィルタリングダイアログプログラム(`builtin'は内部
 # ターミナルダイアログ) は、stdout にパスフレーズを提供する必要があります。
 SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase
 
 # プロセス間セッションキャッシュ:
 # SSLセッションキャッシュを構成する: まずメカニズム 
 # 使用して期限切れのタイムアウト(秒単位)を指定します。
 # (メカニズム dbm にはメモリ リークがあることがわかっているため、使用しないでください)。
 #SSLセッションキャッシュ dbm:${APACHE_RUN_DIR}/ssl_scache
 SSLセッションキャッシュ shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
 SSLセッションキャッシュタイムアウト 300
 
 # セマフォ:
 # 相互排他セマフォへのパスを設定する
 # SSL エンジンはプロセス間同期のために内部的に使用します。 
 # (デフォルトでは無効、グローバルMutexディレクティブはデフォルトで統合します
 # これ)
 #ミューテックスファイル:${APACHE_LOCK_DIR}/ssl_mutex ssl-cache
 
 
 # SSL 暗号スイート:
 # クライアントがネゴシエートできる暗号をリストします。
 # 利用可能なすべてのciphersのリストについては、opensslパッケージのciphers(1)マニュアルページを参照してください。
 # オプション。
 # 安全な暗号のみを有効にする:
 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
 
 # SSL サーバー暗号順序の優先順位:
 # 暗号アルゴリズムの選択にはサーバーの優先順位を使用します。
 # クライアントは低レベルの暗号化を好む場合があります。これを有効にする必要があります
 # より強力な暗号化を強制したい場合、そして余裕がある場合は
 # CPUコストを削減し、SSLCipherSuiteをオーバーライドして
 # 安全でない暗号を最初に使用します。
 # デフォルト: オフ
 SSLHonorCipherOrder オン
 
 # 有効にするプロトコル。
 # 使用可能な値: all、SSLv3、TLSv1、TLSv1.1、TLSv1.2
 # SSL v2 はサポートされなくなりました
 SSLプロトコルすべて -SSLv2 -SSLv3
 
 # まだサポートしていないクライアントとの安全でない再ネゴシエーションを許可する
 # セキュアな再ネゴシエーションプロトコル。デフォルト: オフ
 #SSLInsecureRenegotiation オン
 
 # 非 SNI クライアントが名前ベースの仮想ホストにアクセスすることを禁止するかどうか。
 # デフォルト: オフ
 #SSLStrictSNIVHostCheck オン
 
</モジュール>
 
# vim: 構文=apache ts=4 sw=4 sts=4 sr noet

次はサイトの設定です。ここではデフォルトの default-ssl.conf を使用します。

<IfModule mod_ssl.c>
 <仮想ホスト_default_:443>
 サーバー名 
 
 ################独自のサイト構成を追加する##########
 
 
 
 # 利用可能なログレベル: trace8、...、trace1、debug、info、notice、warn、
 # エラー、クリティカル、アラート、緊急。
 # 特定のログレベルを設定することもできます
 # モジュール、例:
 #ログレベル情報 ssl:warn
 
 エラーログ ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log を組み合わせたもの
 
 # conf-available/のほとんどの設定ファイルは、
 # グローバルレベルで有効または無効にするには、
 # 特定の仮想ホストのみの行を含めます。たとえば、
 # 次の行は、このホストのみのCGI設定を有効にします
 # 「a2disconf」でグローバルに無効にされた後。
 #conf-available/serve-cgi-bin.conf を含める
 
 # SSL エンジン スイッチ:
 # この仮想ホストの SSL を有効/無効にします。
 SSLエンジンオン
 
 # 自己署名証明書(snakeoil)は、インストールすることで作成できます。
 # ssl-certパッケージ。参照
 詳細については、 # /usr/share/doc/apache2/README.Debian.gz を参照してください。
 # キーと証明書の両方が同じファイルに保存されている場合、
 # SSLCertificateFile ディレクティブが必要です。
 SSL証明書ファイル /etc/apache2/cert/public.pem
 SSL証明書キーファイル /etc/apache2/cert/xxxxxxx.key
 
 # サーバー証明書チェーン:
 # SSLCertificateChainFileを、
 # PEMエンコードされたCA証明書の連結。
 # サーバー証明書の証明書チェーン。または
 # 参照ファイルはSSLCertificateFileと同じでも構いません
 # CA証明書がサーバーに直接追加される場合
 # 利便性のための証明書。
 SSL証明書チェーンファイル /etc/apache2/cert/chain.pem
 
 # 証明機関 (CA):
 # CA証明書の検証パスを設定します。CAが見つかる場所です。
 # クライアント認証用の証明書または代わりに1つ
 # これらすべてを含む巨大なファイル (ファイルは PEM でエンコードされている必要があります)
 # 注意: SSLCACertificatePath 内にはハッシュシンボリックリンクが必要です
 # 証明書ファイルを指定するには、提供されている
 # 変更後にハッシュシンボリックリンクを更新するための Makefile。
 #SSLCACertificatePath /etc/ssl/certs/
 #SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
 
 # 証明書失効リスト (CRL):
 # クライアントのCA CRLを検索するCA失効パスを設定します
 # 認証またはすべての内容を含む1つの巨大なファイル
 個数 (ファイルは PEM でエンコードされている必要があります)
 # 注意: SSLCARevocationPath 内にはハッシュシンボリックリンクが必要です
 # 証明書ファイルを指定するには、提供されている
 # 変更後にハッシュシンボリックリンクを更新するための Makefile。
 #SSLCARevocationPath /etc/apache2/ssl.crl/
 #SSLCARevocationFile /etc/apache2/ssl.crl/ca-bundle.crl
 
 # クライアント認証(タイプ):
 # クライアント証明書の検証タイプと深さ。タイプは
 # none、optional、require、optional_no_ca。深さは
 # 証明書をどの程度深く検証するかを指定する数値
 # 証明書が有効でないと判断する前に、発行者チェーンを確認します。
 #SSLVerifyClient が必要
 #SSL検証深度10
 
 # SSL エンジン オプション:
 # SSL エンジンのさまざまなオプションを設定します。
 # o 偽BasicAuth:
 # クライアントのX.509をBasic認証に変換します。これは、
 # アクセス制御には標準の Auth/DBMAuth メソッドを使用できます。
 # ユーザー名は、クライアントの X.509 証明書の「1 行」バージョンです。
 # ユーザーからパスワードは取得されないことに注意してください。ユーザー内のすべてのエントリ
 # ファイルにはこのパスワードが必要です: `xxj31ZMTZzkVA'。
 # o 証明書データのエクスポート:
 # これにより、2つの追加の環境変数がエクスポートされます: SSL_CLIENT_CERTと
 # SSL_SERVER_CERT。これらには、PEMエンコードされた証明書が含まれています。
 # サーバー(常に存在)とクライアント(クライアントが
 # 認証が使用されます)。これを使用して証明書をインポートできます
 # CGI スクリプトに組み込みます。
 # o 標準環境変数:
 # これは、標準の SSL/TLS 関連の `SSL_*' 環境変数をエクスポートします。
 # デフォルトでは、パフォーマンス上の理由からこのエクスポートはオフになっています。
 # 抽出ステップはコストのかかる操作であり、通常は
 # 静的コンテンツを提供するには役に立ちません。そのため、通常は
 # CGI および SSI リクエストのみのエクスポート。
 # o OptRenegotiate:
 # これにより、SSL接続の再ネゴシエーション処理が最適化され、SSL
 # ディレクティブはディレクトリごとのコンテキストで使用されます。
 #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
 <FilesMatch "\.(cgi|shtml|phtml|php)$">
 SSLオプション +標準環境変数
 </ファイル一致>
 <ディレクトリ /usr/lib/cgi-bin>
 SSLオプション +標準環境変数
 </ディレクトリ>
 
 # SSL プロトコルの調整:
 # 安全でデフォルトですが、SSL/TLS標準に準拠したシャットダウン
 # アプローチは、mod_sslがclose notificationアラートを送信するが、
 # クライアントからの終了通知アラート。別のシャットダウンが必要な場合
 # アプローチでは、次のいずれかの変数を使用できます。
 # o ssl-unclean-shutdown:
 # これにより、接続が閉じられたときにクリーンでないシャットダウンが強制されます。つまり、
 # SSLクローズ通知アラートが送信または受信を許可されています。これは違反です
 # SSL/TLS標準ではありませんが、一部の低機能なブラウザでは必要です。
 # 標準的なアプローチではI/Oエラーが発生するため、
 # mod_ssl はクローズ通知アラートを送信します。
 # o ssl-正確なシャットダウン:
 # これにより、接続が閉じられたときに正確なシャットダウンが強制されます。つまり、
 # SSL クローズ通知アラートが送信され、mod_ssl はクローズ通知を待機します
 # クライアントのアラート。これは100% SSL/TLS標準に準拠していますが、
 # 実践すると、ブラウザが動かなくなり、接続がハングすることがよくあります。
 # これは、SSL実装がわかっているブラウザのみ対象です
 # 正常に動作します。
 # 注意: 壊れたクライアントの問題のほとんどはHTTPにも関連しています
 # キープアライブ機能があるので、通常はさらに無効にしたい
 # これらのクライアントに対してもキープアライブを行います。これには変数「nokeepalive」を使用します。
 # 同様に、回避策として一部のクライアントにHTTP/1.0の使用を強制する必要がある
 # 壊れたHTTP/1.1実装。変数「downgrade-1.0」と「downgrade-1.0」を使用してください。
 # この場合は「force-response-1.0」を使用します。
 # ブラウザマッチ "MSIE [2-6]" \
 # nokeepalive ssl-unclean-shutdown \
 # ダウングレード 1.0 強制レスポンス 1.0
 
 </仮想ホスト>
</モジュール>
 
# vim: 構文=apache ts=4 sw=4 sts=4 sr noet

Alibaba Cloud チュートリアルの設定項目が 2 つの設定ファイルに分かれていることに気付きましたか?

次に、ブラウザで https を使用してアクセスすると、成功します。 (Linux では wget または curl を使用してテストできます)

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Apache、wsgi、django プログラムのデプロイメント設定方法の詳細な説明
  • LinuxベースのApacheウェブサイトサービス構成の詳細な説明
  • Windows での Apache+Tomcat7 負荷分散構成方法の詳細な説明
  • Apache Web サーバーを使用して 2 つ以上のサイトを構成する方法
  • Apache での ModSecurity のインストール、有効化、および構成
  • CentOS 7 での Apache Web サーバーのインストールと設定のチュートリアル
  • Alibaba Cloud Server Apache は SSL 証明書を構成して Https を正常に有効にします (さまざまな落とし穴を記録します)
  • Win10 Apache が仮想ホストを設定した後にローカルホストが利用できなくなる問題の解決方法
  • Apache 経由で複数の仮想ホストをローカルに設定する方法

<<:  MySQLで行または列をソートする方法

>>:  要素内の TimePicker は時間の一部を無効にします (分単位で無効)

推薦する

XHTML チュートリアル、XHTML の基礎を簡単に紹介します

<br />この記事では、XHTMLとXHTMLの基礎知識について簡単に紹介します。 X...

ネイティブ JS カプセル化 vue タブ切り替え効果

この記事の例では、ネイティブJSカプセル化vueタブ切り替えの具体的なコードを参考までに共有していま...

MySQL 構成マスタースレーブサーバー (マスター 1 台とスレーブ複数台)

目次アイデアホスト構成confを変更する再起動テストスレーブ 1 の構成スレーブ2の構成マスターとス...

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

TypeScriptはvscodeを使用してコードのコンパイルプロセスを監視します

インストールtsコマンドをグローバルにインストールする npm install -g typescr...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 1

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

Angularコンポーネントのライフサイクルの詳しい説明(パート2)

目次1. ビューフック1. ngAfterViewInit および ngAfterViewCheck...

Docker を使用して ELK ログ システムを構築する例

以下のインストールではすべて、インストール ルート ディレクトリとして ~/ ディレクトリが使用され...

Vue.js アプリケーションのパフォーマンス最適化分析 + ソリューション

目次1. はじめに2. Vue JS のパフォーマンス最適化が必要な理由は何ですか? 3. Vueの...

メタ情報に基づいて時間指定のページ更新またはリダイレクトを実装する

メタを使用して、ページの時間指定更新またはジャンプを実装します。 XML/HTML コードコンテンツ...

JS の難しさ 同期と非同期、スコープとクロージャ、プロトタイプとプロトタイプ チェーンの詳細な説明

目次JS スリーマウンテンズ同期 非同期同期と非同期の違い範囲、終了関数スコープチェーンブロックスコ...

CentOS 7 はネットワークカードを変更した後、インターネットにアクセスできません

不明なドメイン名 www.baidu.com を Ping するホストのIPアドレスを変更する右クリ...

MySQL UNION演算子の基本知識ポイント

MySQL UNION 演算子このチュートリアルでは、MySQL UNION 演算子の構文と例を紹介...

MySQL max_allowed_pa​​cket 設定

max_allowed_pa​​cket は、受け入れるパケットのサイズを設定するために使用される ...

VMware esxi6.5 のインストールと使用の詳細な手順

目次導入建築ESXIの利点vSphere とは何ですか? 2. 仮想マシンの利点3. 仮想マシンを使...