Let’s Encrypt(Certbot)のSSLサーバー証明書をP12形式(PKCS12)に変換してメールサーバー等で使用する
一部のソフトウェアでは、PKCS12形式(.p12のファイル)をサーバー証明書として使用する場合がある。Let’s Encryptでは標準でP12フィイルを作成してくれないが、 opensslコマンドでこれを簡単に作成し、DovecotやDavmail等で使用することが可能だ。
Let’s Encryptが出力するファイル
Let’s Encryptが標準で出力するファイルは下記の通りだ。
privkey.pem
その名の通りの秘密鍵。
cert.pem
サーバー証明書。いわゆる公開鍵。ただし、中間証明書を含んでいないため、中間証明書がクライアント側に存在しない場合には使いものにならない。
chain.pem
中間証明書。
fullchain.pem
サーバー証明書。中間証明書を含んでいる。cert.pem+chain.pemという形だろうか。基本的にこいつを使用しておけば間違いはない。
opensslでp12(PKCS12)ファイルを作成する
コマンド一発で終わりである。
証明書が格納されているフォルダ(/etc/letsencrypt/live/以下)で、下記のように実行をする。
1 2 |
openssl pkcs12 -export -in SSLサーバー証明書 -inkey 秘密鍵 -certfile 中間証明書 -out 出力ファイル.p12 |
今回に当てはめるとこんな感じ。
1 2 |
openssl pkcs12 -export -in cert.pem -inkey privkey.pem -certfile chain.pem -out output.p12 |
ファイルのパスワードを聞かれるので、適当に入力しておこう。ブランクでも問題はないのだが、一部のソフトウェア(davmailなど)では受け付けてくれない。
ちなみに、パスワードを事前に指定する場合には次のようになる。
1 2 |
openssl pkcs12 -password pass:password -export -in cert.pem -inkey privkey.pem -certfile chain.pem -out output.p12 |
この”pass”を付けないとコマンドが通らないので注意。
あとは、Let’s Encryptが証明書を交換するタイミングで都度これをcronなどで回してあげれば良い。
1 2 |
cd /etc/letsencrypt/live/*** && oopenssl pkcs12 -password pass:password -export -in cert.pem -inkey privkey.pem -certfile chain.pem -out output.p12 |
これで、Let’s Encryptを用いたP12ファイル(PKCS12形式ファイル)の作成が完了した。