2018/3/23 追記
証明書のインストールとかしなくてもちゃんとした設定をしてれば普通につながります
→ nginxでLet's Encryptを使う場合はfullchain.pemを指定する
2018/3/23 追記おしまい

はい、というわけでCloudGarage上にJIRAを構築した話の続編です。(その1その2

せっかくJIRAとConfluenceを立てたので、それぞれを接続して相互に行き来ができるようにしたいと思います。

JIRAとConfluenceを接続するには、どちらかの管理画面から「アプリケーションリンク」を追加すればいいだけです。簡単ですね。

以上終了。



といきたいところなのですが、Let's EncryptでSSL化していると普通にアプリケーションリンクを作成してもまともにつながりません。


application-link-error

色々とググった結果、JIRAで使用しているJavaがLet's Encryptの証明書を持っていないので、JREのkeystoreに証明書をインストールしてやる必要があります。

gistにLet's Encryptの証明書をJDKのkeystoreにインストールするスクリプトがあったので、これを少し改変して使うことにします。

まずはインストール用のスクリプトをダウンロードして実行権限を付けます。
$ mkdir -p ~/lets_encrypt
$ cd ~/lets_encrypt
$ wget https://gist.githubusercontent.com/Firefishy/109b0f1a90156f6c933a50fe40aa777e/raw/15926be913682876ae68bb4f71e489bc53feaae3/install-letsencrypt-in-jdk.sh
$ chmod +x ./install-letsencrypt-in-jdk.sh
JIRAのJREにインストールするために、スクリプトの4行目、5行目の以下の2行を削除します。
JAVA_HOME=${1-text}
[ $# -eq 0 ] && { echo "Usage: sudo $0 \$(/usr/libexec/java_home -v '1.8*')" ; exit 1; }
で、以下のように実行して証明書をインストールします。
$ sudo JAVA_HOME=/opt/atlassian/jira PATH=$PATH:$JAVA_HOME/jre/bin ./install-letsencrypt-in-jdk.sh

(snip)

keytool error: java.lang.Exception: Alias <isrgrootx1> does not exist
keytool error: java.lang.Exception: Alias <isrgrootx2> does not exist
keytool error: java.lang.Exception: Alias <letsencryptauthorityx1> does not exist
keytool error: java.lang.Exception: Alias <letsencryptauthorityx2> does not exist
keytool error: java.lang.Exception: Alias <letsencryptauthorityx3> does not exist
keytool error: java.lang.Exception: Alias <letsencryptauthorityx4> does not exist
Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore
Certificate was added to keystore
インストールができたらJIRAを再起動します。
$ sudo systemcrl restart jira
同じ手順でConfluenceにも証明書のインストールをして再起動します。

その後、アプリケーションリンクの追加を行うと正常にリンクできます。
お疲れ様でした。


余談(やってみてダメだったこと)

調べたところ、Javaのリリースノートに「Java 8 Update 141(8u141)でLet's Encryptの証明書が追加された」という記述を見つけました。
java-support-letsencrypt

ということで、最新のJava8(8u151 2017/10/23時点)なJREを使うようにしたけどダメでした。
素直に証明書をインストールしましょう。