でPKCS#12 / PFX証明書を変換して使用する方法 Apache

複数のサーバーがあり、ロードバランサー環境やワイルドカードSSL証明書を使用する場合など、同じSSL証明書を使用する必要がある場合は、サーバー間で証明書を転送する必要があります。 通常、サーバー間のSSL転送は、LinuxサーバーやWindowsサーバーなどの同じ種類のサーバー間で行うと簡単です。

しかし、WindowsからLinuxサーバーになると、プロセスは少し難しくなります。 この場合、SSL証明書をWindowsサーバーからエクスポートし、.pfxファイルに保存する必要があります。 その後、この.pfx(PKCS#12 /)ファイルをLinuxサーバーにコピーし、そのファイルを Apache-個々の証明書、CAバンドル、秘密鍵ファイルなどの互換性のあるファイル形式を使用します。

これは、ホスティング会社を切り替えるときにも必要になる場合があります。 この記事では、実行中のLinuxサーバー上でWindowsサーバーから.pfx証明書を正常に使用する方法について、ステップバイステップの手順で正確なプロセスを説明します。 Apache。

.pfxファイルと.crtファイルの違い

その前に、変換プロセスから始めて、.pfxファイルと.crtファイルの違いについて簡単に説明します。 基本的に、証明書(.crtファイル)は公開鍵のコンテナーです。 これには、公開鍵、サーバー名、サーバーに関する追加情報、および証明機関(CA)によって計算された署名が含まれます。 SSLハンドシェイク中に、サーバーは公開鍵をクライアントに送信します。クライアントには、実際には証明書が含まれており、他のいくつかの証明書チェーンも含まれています。

一方、.pfxファイルはバッグに似たPKCS#12アーカイブであり、オプションのパスワード保護を備えた多数のオブジェクトを含めることができます。 通常、PKCS#12アーカイブには、証明書(おそらく、さまざまなCA証明書のセットを含む)とそれに対応する秘密鍵が含まれています。

それでは、変換プロセスから始めましょう。

ステップ1:WindowsサーバーからLinuxサーバーにpfx証明書を転送する

まず、ドメインpuebe.comのWindowsサーバーから.pfx証明書に証明書をエクスポートしました。 そして、ローカルシステムからフォルダ「/ transfered_certificates /」にSCPを使用して、そのpfxファイルをLinuxサーバーにコピーしました。 FTP、SCP、wgetを使用するか、これらの方法のいずれかを使用して、pfx証明書をLinuxサーバーに転送できます。

# transfered_certificates]# ll
-rw-r--r-- 1 root root 5409 Oct 9 10:02 c667cafbf01ffd7310db952e50eaf2b2.pfx

ステップ2:OpenSSLを使用して.pfxファイルを変換する

次のステップは、ドメインpuebe.comのこの.pfx証明書から必要な証明書、キー、およびCAバンドルを抽出することです。 OpenSSLコマンドを使用して、pfxファイルからこれらの詳細を抽出できます。 このpfx証明書から必要な情報を抽出するコマンドを見てみましょう。

pfxファイルからの証明書の抽出

このコマンドを使用して、pfxファイルからドメインpuebe.comの証明書の詳細を抽出できます。

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -clcerts -nokeys -out puebe.com.crt
Enter Import Password:
MAC verified OK

これにより、ドメイン証明書ファイルが提供されます。 puebe.com.crt Linuxでサポートする互換性のある形式で。

pfxファイルからのキーファイルの抽出

このコマンドを使用して、pfxファイルからドメインpuebe.comのキーの詳細を抽出できます。

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -nocerts -nodes -out puebe.com.key
Enter Import Password:
MAC verified OK

これにより、ドメインキーファイルが提供されます。 puebe.com.key

pfxファイルから証明書のチェーンを抽出する

このコマンドを使用して、pfxファイルから証明書の詳細のチェーンを抽出できます。

# openssl pkcs12 -in c667cafbf01ffd7310db952e50eaf2b2.pfx -out puebe.com-ca.crt -nodes -nokeys -cacerts
Enter Import Password:
MAC verified OK

これにより、ファイル内のドメインpuebe.comの証明書のチェーンが提供されます。 puebe.com-ca.crt

これらの抽出したファイルを「/ etc / pki / tls / certs /」の下のcertフォルダーにコピーしました。 必要に応じてこれを行うことができますが、そうでない場合は、フォルダパスを直接指定できます。 Apache これらのファイルを抽出した構成。

[root@li1005-45 certs]# ll puebe.com*
-rw-r--r-- 1 root root 3689 Oct 9 10:10 puebe.com-ca.crt
-rw-r--r-- 1 root root 1954 Oct 9 10:06 puebe.com.crt
-rw-r--r-- 1 root root 1828 Oct 9 10:07 puebe.com.key

ステップ3:ドメインSSL証明書をに割り当てる Apache

.pfxファイルを変換した後、新しく作成したファイルをにコピーする必要があります。 Apache サーバーと編集 Apache それらを使用するための構成ファイル。 /etc/httpd/conf.d/フォルダーの下にドメインの仮想ホストを作成してSSLを有効にし、必要に応じてこれらの抽出されたファイルを含めました。 以下の私の仮想ホストの詳細を参照してください。

[root@li1005-45 conf.d]# cat puebe_ssl.conf
<VirtualHost puebe.com:443>
DocumentRoot "/var/www/html/puebe.com/public_html/"
ServerName www.puebe.com:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn

SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA

SSLCertificateFile /etc/pki/tls/certs/puebe.com.crt
SSLCertificateKeyFile /etc/pki/tls/certs/puebe.com.key
SSLCertificateChainFile /etc/pki/tls/certs/puebe.com-ca.crt

#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
<Files ~ ".(cgi|shtml|phtml|php3?)$">
 SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
 SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" 
nokeepalive ssl-unclean-shutdown 
downgrade-1.0 force-response-1.0

# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog logs/ssl_request_log 
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b"

</VirtualHost>

ファイルの名前とパスを変更して、証明書ファイルと一致させることができます。
SSLCertificateFile ドメイン名のプライマリ証明書ファイルである必要があります。
SSLCertificateKeyFile 抽出されたキーファイルである必要があります。
SSLCertificateChainFile 中間証明書チェーンファイルである必要があります。

必ず構成テストを実行し、再起動してください Apache これが終わったらサービス。

# apachectl configtest
Syntax OK
# service httpd restart

これで、利用可能なSSLチェッカーツールのいずれかを使用してドメインSSL証明書を確認できます。 または、URLを参照することもできます>>https://puebe.com/。 リンクでSSLのインストールを確認しました

>> https://www.sslshopper.com/ssl-checker.html#hostname=puebe.com

これにより、WindowsサーバーからLinuxディストリビューションに証明書を簡単に転送できます。 この記事がお役に立てば幸いです。 これに関する貴重なコメントや提案を投稿してください。