このチュートリアルでは、1つのIPアドレスのみを使用してApacheを使用してCentOSVPSに複数のSSL証明書を設定する方法を示します。
これは、Server Name Indication(SNI)と呼ばれるSSLプロトコルの拡張によって許可されます。現在のほとんどのデスクトップおよびモバイルWebブラウザーはSNIをサポートしています。 SNIを使用する主な利点は、IPアドレスを追加購入することなく複数のWebサイトを保護できることです。
Apache WebサーバーがOpenSSLライブラリとツールキットを使用できるように、mod_sslセキュリティモジュールがインストールされ、有効になっていることを確認してください。
yum install mod_ssl openssl
次のコマンドを実行します。
mkdir -p /etc/httpd/ssl/ mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak cd /etc/httpd/ssl/
ドメインのSSL証明書署名要求(CSR)ファイルを生成します:
openssl genrsa -out domain1.key 2048 openssl req -new -key domain1.key -out domain1.csr openssl genrsa -out domain2.key 2048 openssl req -new -key domain2.key -out domain2.csr
証明書に次の詳細を入力します。
- 国名
- 州または県の名前
- 地域名
- 組織名
- 組織単位名
- メールアドレス
共通名(つまり、ドメイン名)の入力を求められたら、保護しているWebサイトのFQDN(完全修飾ドメイン名)を入力します。
実稼働環境で使用する場合は、商用SSL証明書をインストールすることをお勧めします。または、次のコマンドを使用してWebサイトまたはアプリケーションを開発またはテストする場合は、自己署名SSL証明書を生成して使用します。
openssl x509 -req -days 365 -in domain1.csr -signkey domain1.key -out domain1.crt openssl x509 -req -days 365 -in domain2.csr -signkey domain2.key -out domain2.crt
「ssl.conf」Apache構成ファイルを編集します:
vi /etc/httpd/conf.d/ssl.conf
次の行を追加します:
LoadModule ssl_module modules/mod_ssl.so Listen 443 NameVirtualHost *:443 SSLPassPhraseDialog builtin SSLSessionCacheTimeout 300 SSLMutex default SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin SSLStrictSNIVHostCheck off <VirtualHost *:443> DocumentRoot /var/www/html/domain1 ServerName domain1.com ServerAlias www.domain1.com SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/httpd/ssl/domain1.crt SSLCertificateKeyFile /etc/httpd/ssl/domain1.key #SSLCertificateChainFile /etc/httpd/ssl/ca.crt ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/html/domain2 ServerName domain2.com ServerAlias www.domain2.com SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW SSLCertificateFile /etc/httpd/ssl/domain2.crt SSLCertificateKeyFile /etc/httpd/ssl/domain2.key #SSLCertificateChainFile /etc/httpd/ssl/ca.crt ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog logs/ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
商用SSL証明書を使用する場合、署名機関には中間CA証明書が含まれる可能性があります。その場合は、新しい「/etc/httpd/ssl/ca.crt」ファイルを作成し、その中に中間CAの内容を貼り付けてから、「ssl.conf」構成ファイルを編集して、次の行のコメントを解除します。
SSLCertificateChainFile /etc/httpd/ssl/ca.crt
そのため、ApacheWebサーバーはCA証明書を見つけることができます。
Apache構成をテストします:
/etc/init.d/httpd configtest Syntax OK
変更を有効にするには、Apacheサービスを再起動します。
service httpd restart
お気に入りのWebブラウザでhttps://domain1.comとhttps://domain2.comを開き、SSL証明書が正しくインストールされていることを確認します。
もちろん、Linux VPSホスティングサービスのいずれかを使用している場合は、これを行う必要はありません。その場合は、専門のLinux管理者にVPSに複数のSSL証明書を設定するよう依頼するだけです。 24時間年中無休でご利用いただけます。リクエストはすぐに処理されます。
PS。 この投稿が気に入った場合は、左側のボタンを使用してソーシャルネットワーク上の友達と共有するか、下に返信を残してください。ありがとう。