プルリクエストがあるたびに自動デプロイしている環境用の証明書を作った。
ブランチ名がサブサブドメインになっているのでワイルドカード証明書が必要だった。
参考
- オレだよオレオレ認証局で証明書つくる - Qiita
- CentOS6などで俺俺CAとSHA2証明書を作るときのメモ - Qiita
- OpenSSLコマンドでオレオレ証明書を作り、ルート認証局としてサーバー証明書を発行する - Sanwa Systems Tech Blog
- opensslでマルチドメイン証明書用のCSRを作成
ハマったこと
↓のせいで2回やりなおした…。
- SANを入れてなかった。
- SHA-1で署名してしまっていた。
ファイル
san.cnf
$ cp /System/Library/OpenSSL/openssl.cnf san.cnf
した後、以下を各セクションに追記した。
[ req ]
req_extensions = v3_req
[ usr_cert ]
subjectAltName = @alt_names
[ v3_req ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = sub.example.com
DNS.2 = *.sub.example.com
san.ext
以下の内容を書いた。
subjectAltName=DNS:sub.example.com,DNS:*.sub.example.com
最終的な手順
$ openssl genrsa -aes256 -out ca.key 2048
password
$ openssl req -new -key ca.key -out ca.csr -sha256
$ openssl x509 -days 3650 -in ca.csr -req -signkey ca.key -out ca.crt -sha256
$ mkdir demoCA
$ cd demoCA
$ mkdir private crl certs newcerts
$ echo "01" > serial
$ touch index.txt
$ cd ..
$ openssl genrsa -aes256 -out server.key 2048
$ openssl rsa -in server.key -out np.key
$ openssl req -new -key server.key -out server.csr -config san.cnf -sha256
$ openssl ca -days 3650 -cert ca.crt -keyfile ca.key -in server.csr -out server.crt -config san.cnf -md sha256
来年にはLet's Encryptがワイルドカード対応するようだし、あまり出番はなさそう。
環境によってうまくうごかないことがわかった。
やはりLet's Encrypt待つほうが無難か。