
[元はSlack Overflowに投稿しかし、コメントスレッドでは不適切な会場について苦情が寄せられました。
私たちは StartCom SSL 証明書から Let's Encrypt への切り替えに取り組んでおり、macOS Server + Apache HTTPD で自動的に動作するように設定しようとしています。コマンドライン ツール ( security import
) から、macOS Server は直接ファイルを受け入れません。macOS Server にファイルを与え、そこから Apache で構成するファイルを抽出する.pem
必要があります。面倒で無意味ですが、今のところはこれで我慢するしかありません。.p12
.pem
このファイルを作成するには.p12
、次のコマンドを実行する必要があります。
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/cert.pem \
-certfile /etc/letsencrypt/live/example.com/chain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
ここで奇妙なことが起こります。出力example.com.p12
ファイルにはexample.com
証明書が含まれています2回、Let's Encrypt 中間 CA 証明書、不要な自己署名 DST Root CA X3 アンカー証明書 (すべてのブラウザーにデフォルトでインストールされている)、最後に秘密キーが続きます。その結果、Apache SSL ハンドシェイクにはサーバー証明書が 2 回、中間 CA 証明書、ルート証明書 (送信されるべきではない) が含まれることになり、Qualys SSL Labs テスターで警告が表示されます。
内部を確認したcert.pem
ところ、サーバー証明書のみ (1 回のみ) が含まれています。chain.pem
中間 CA 証明書のみが含まれています (ルート アンカーやサーバー証明書ではありません) privkey.pem
。秘密キーのみが含まれています。つまり、openssl pkcs12 -export
サーバー証明書を複製してから、ルート アンカー証明書を検索して追加するという追加の手順を実行することになります。
同じコマンドを openSUSE Linux で実行すると、出力.p12
ファイルにはサーバー証明書 (1 回)、中間 CA 証明書、および秘密キーのみが含まれます。ルート アンカーはありません。
以下のバリエーションを試しましたが、出力に違いはありませんでした。
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-certfile /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
Linux マシンで不正な二重サーバー証明書の動作を再現する唯一の方法は、次の操作を実行することです (ただし、ルート アンカーはまだ含まれません)。
openssl pkcs12 -export \
-inkey /etc/letsencrypt/live/example.com/privkey.pem \
-in /etc/letsencrypt/live/example.com/cert.pem \
-certfile /etc/letsencrypt/live/example.com/fullchain.pem \
-out /etc/letsencrypt/live/example.com/example.com.p12
fullchain.pem
( の代わりに を...chain.pem
と組み合わせて使用すると、cert.pem
サーバー証明書が重複する理由が十分に理解できますが、これは Mac OS X で使用しているコマンドではありません。)
openssl pkcs12 -export
ここで正しいことを行うにはどうしたらよいか、何かアイデアはありますか?