こんにちは。ゴーリスト開発の飯尾です。
AWS RDS for MySQLに、SSL証明書を使ってJDBC接続する時に行ったことをまとめました。
前提
- RDSのセキュリティグループで自IPからのアクセスを許可しておく
- 2017年10月の試行メモ
手順
1. 証明書をゲットだぜ
$ wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem
2. 証明書をjksファイルに変換する
YOUR_JKS_PASSWORDのところはお好みで変えてください。
Macなのでこう
$ split -p "-----BEGIN CERTIFICATE-----" rds-combined-ca-bundle.pem individual- $ find . -iname 'individual*' -exec keytool -import -file {} -alias {} -storepass YOUR_JKS_PASSWORD -keystore amazon.jks \;
Linuxならcsplitで分割して同様にひとつのjksファイルにまとめる。
このへんを見ました。
Using Java to establish a secure connection to MySQL Amazon RDS (SSL/TLS) - Stack Overflow
3. 作成したjksファイルを任意のフォルダに移動
# mkdir /opt/jks # mv amazon.jks /opt/jks
4. 接続URLに各パラメータを追加する
- useSSL=true
- requireSSL=true
- verifyServerCertificate=true
- trustCertificateKeyStoreUrl=file:///opt/jks/amazon.jks # 作成したjksファイルのパス
- trustCertificateKeyStoreType=JKS
- trustCertificateKeyStorePassword=YOUR_JKS_PASSWORD # jksファイル作成時に設定したパスワード
こんなかんじになりました
jdbc:mysql://YOUR_SERVER/YOUR_DB?characterEncoding=UTF8&useSSL=true&requireSSL=true&verifyServerCertificate=true&trustCertificateKeyStoreUrl=file:///opt/jks/amazon.jks&trustCertificateKeyStoreType=JKS&trustCertificateKeyStorePassword=YOUR_JKS_PASSWORD
5. あとはいつものとおりDriverManager.getConnection
参考URL
MySQL :: MySQL Connector/J 5.1 Developer Guide :: 5.5 Connecting Securely Using SSL
JKS 形式のキーストアの作成 (SSL をサポートする Java CAPS の構成)
EC2上のTomcatからRDSにSSL接続する方法 | infoScoop開発者ブログ
ひとこと
真面目さがアフレデル〜