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/以下)で、下記のように実行をする。
openssl pkcs12 -export -in SSLサーバー証明書 -inkey 秘密鍵 -certfile 中間証明書 -out 出力ファイル.p12
今回に当てはめるとこんな感じ。
opensslpkcs12-export-incert.pem-inkeyprivkey.pem-certfilechain.pem-outoutput.p12
ファイルのパスワードを聞かれるので、適当に入力しておこう。ブランクでも問題はないのだが、一部のソフトウェア(davmailなど)では受け付けてくれない。
ちなみに、パスワードを事前に指定する場合には次のようになる。
opensslpkcs12-passwordpass:password-export-incert.pem-inkeyprivkey.pem-certfilechain.pem-outoutput.p12
この"pass"を付けないとコマンドが通らないので注意。
あとは、Let’s Encryptが証明書を交換するタイミングで都度これをcronなどで回してあげれば良い。
cd/etc/letsencrypt/live/***&&oopensslpkcs12-passwordpass:password-export-incert.pem-inkeyprivkey.pem-certfilechain.pem-outoutput.p12
これで、Let’s Encryptを用いたP12ファイル(PKCS12形式ファイル)の作成が完了した。