Skip to content

Instantly share code, notes, and snippets.

@uemuraj
Last active May 12, 2018 23:02
Show Gist options
  • Save uemuraj/31973459bb1b87a7efb0 to your computer and use it in GitHub Desktop.
Save uemuraj/31973459bb1b87a7efb0 to your computer and use it in GitHub Desktop.
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