Skip to content

Instantly share code, notes, and snippets.

@uemuraj
Last active May 12, 2018 23:02
Let's Encrypt で取得した証明書を Tomcat, Jenkins で使うには?

あまり機会はないかもしれませんが Apache Tomcat 自身で SSL を行う場合、Java のキーストアファイルが必要です。
これは Jenkins でも同じです。

このキーストアファイルは以下の手順で作ることができます。 tomcat doesn't deliver intermediate certificate (https) を参考にしました。

1. openssl と keytool の両方を使いますので、それぞれパスを通してください

export JAVA_HOME=/opt/jre1.8.0_65
export PATH=$PATH:$JAVA_HOME/bin
export PATH=/usr/local/openssl-1.0.1p/bin:$PATH

2. 適当なディレクトリを作り、ルート証明と中間証明をコピーします

ルート証明は letsencrypt のディレクトリ内にありませんので DST Root CA X3 を適当に調達してください。
Root Certificates のページにリンクがあるのですが、 Cross Signing のところにあるものです。
リンク先で PEM の中身が見られるのですが、BEGIN CERTIFICATE/END CERTIFICATE のコメントが無いので自分で書く必要があります。

mkdir certs
mv root.pem certs/
cp /etc/letsencrypt/live/www.example.com/chain.pem certs/

3. c_rehash コマンドで適当に処理します

このコマンドは OS の openssl パッケージには含まれていない? CentOS では openssl-perl パッケージにあるようです。

c_rehash ~/certs

4. openssl コマンドで一旦 pkcs12 形式に固めます

以下のコマンドで tomcat.p12 ファイルが新しく作られます。このファイルのためのパスワードを決めましょう。

openssl pkcs12 -export -in /etc/letsencrypt/live/www.example.com/cert.pem -inkey /etc/letsencrypt/live/www.example.com/privkey.pem -out tomcat.p12 -chain -CApath ~/certs

5. keytool コマンドでキーストア形式に出力し直します

以下のコマンドで tomcat.keystore ファイルが新しく作られます。
先に、このファイルのためのパスワードを決めましょう。後から tomcat.p12 のパスワードも聞かれます。

keytool -importkeystore -destkeystore tomcat.keystore -srckeystore tomcat.p12 -srcstoretype PKCS12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment