Let’s Encrypt(Certbot)のSSLサーバー証明書をP12形式(PKCS12)に変換してメールサーバー等で使用する

2019年11月22日サーバー構築Linux,Ubuntu,SSL,Let's Encrypt

 

一部のソフトウェアでは、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形式ファイル)の作成が完了した。

Posted by webnetforce