はじめに
OHSにオレオレ証明書ではなく、ちゃんと署名されたSSL証明書をインストールしようとして激ハマりしました。
証明書はLet's Encryptで取得したものですが、ググってもうまくまとまってる記事がなくかなり苦戦。
とりあえずうまくいったので、メモ代わりに。
環境
RHEL7
WebLogic 12c
SSL証明書の取得
以下の証明書類がある前提で。
これをOHSにいれたかった。
- cert.pem(サーバー証明書)
- chain.pem(ルート証明書)
- fullchain.pem(サーバー証明書とルート証明書が合体したやつ)
- privkey.pem(秘密鍵)
これらのファイルを /tmp/certs あたりにでも置いておきましょう。
うまくいかなかった方法
OHSにはOracle Walletっていう仕組みがあるらしく、この中に証明書を入れないとダメらしい。
とりあえずやってみる。
$ ./orapki wallet create -wallet /tmp/wallet -auto_login_only
操作は正常に完了しました。
$ ./orapki wallet add -wallet /tmp/wallet -user_cert -cert /tmp/certs/cert.pem -auto_login_only
PKI-04006: ウォレットに一致する秘密鍵がありません。
んー。秘密鍵をいれるには、import_private_keyっていうオプションがあるみたい。
やってみる。
$ ./orapki wallet import_private_key -wallet /tmp/wallet -pvtkeyfile /tmp/certs/privkey.pem
PKI-07015: 秘密鍵をインポートできません。証明書が必要です。
証明書?サーバー証明書も一緒に指定してみる。
$ ./orapki wallet import_private_key -wallet /tmp/wallet -pvtkeyfile /tmp/certs/privkey.pem -cert /tmp/certs/cert.pem -cacert /home/oracle/cert/chain1.pem
秘密鍵のパスワードを入力してください:
PKI-07014: 秘密鍵をインポートできません。 Header not present in private key
秘密鍵にパスワード付けてないし、"秘密鍵にヘッダーがない"とは・・・?
という感じで、秘密鍵にパスワード付けてみたりいろいろやりましたが、ダメでした。
うまくいった方法
opensslでpem→pfxに変換し、それをインポートすれば良いみたいです。
ペアを作る
$ openssl pkcs12 -export -in /tmp/certs/cert.pem -inkey /tmp/certs/privkey.pem -out ./pkcs.p12
Enter Export Password: [そのままEnter]
Verifying - Enter Export Password: [そのままEnter]
$ ls -l
-rw-r--r-- 1 user group 3013 10月 30 10:56 pkcs.p12 ←ペアのファイルができる
walletを作る
$ ./orapki wallet create -wallet /tmp/wallet -auto_login_only
操作は正常に完了しました。
ルート証明書をwalletに追加する
$ ./orapki wallet add -wallet /tmp/wallet -trusted_cert -cert /tmp/certs/chain.pem -auto_login_only
操作は正常に完了しました。
ペアをwalletにインポートする
$ ./orapki wallet import_pkcs12 -wallet /tmp/wallet -pkcs12file ./pkcs.p12 -auto_login_only
PKCS#12ファイル・パスワードを入力してください: [そのままEnter]
orapki command import_pkcs12 executed successfully.
walletの中身を確認
$ ./orapki wallet display -wallet /tmp/wallet
Requested Certificates:
User Certificates:
Subject: [自分の証明書のCN]
Issuer: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US
Trusted Certificates:
Subject: CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US
Issuer: CN=DST Root CA X3,O=Digital Signature Trust Co.
あとは、SSLWalletにこのウォレットを指定してあげればOK。
ちなみにfullchainの場合
ペア作るときの-inをfullchain.pemにして、そのままwalletにインポートすれば良さそうです。
(ペアの中にルート証明書が入ってるので、wallet addでルート証明書追加しなくていい)