概要

  • CA.(sh|pl)を使わず、openssl.cnfの変更も最小限で済ます
  • オレオレ認証局の証明書をブラウザに登録して警告が出ないようにする
  • ワイルドカードなサーバー証明書を作る
  • クライアント証明書も作る

下準備

sudo cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.orig
vi /etc/ssl/openssl.cnf
  -dir            = ./demoCA
  +dir            = .

  +[ feelmy_net ]
  +subjectAltName = DNS:feelmy.net,DNS:*.feelmy.net

ルート証明書を作る

mkdir ca
cd ca
touch index.txt
echo 01 > serial
mkdir newcerts private
openssl req -new -newkey rsa:2048 -keyout private/cakey.pem -out careq.pem
  Country Name (2 letter code) [AU]:JP
  State or Province Name (full name) [Some-State]:Nara
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:Oiraya Factory
  Common Name (e.g. server FQDN or YOUR name) []:CA
chmod 400 private/cakey.pem

openssl ca -in careq.pem -out cacert.pem -selfsign -days 3650 -extensions v3_ca -batch
rm careq.pem
chmod 444 cacert.pem newcerts/01.pem

サーバー証明書を作る

openssl req -new -newkey rsa:2048 -nodes -keyout cert.key -out cert.csr
  Country Name (2 letter code) [AU]:JP
  State or Province Name (full name) [Some-State]:Nara
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:Oiraya Factory
  Common Name (e.g. server FQDN or YOUR name) []:*.feelmy.net
openssl ca -in cert.csr -out cert.crt -days 3650 -extensions feelmy_net -batch
rm cert.csr
chmod 400 cert.key
chmod 444 cert.crt

クライアント証明書を作る

openssl req -new -newkey rsa:2048 -nodes -keyout client.key -out client.csr
  Country Name (2 letter code) [AU]:JP
  State or Province Name (full name) [Some-State]:Nara
  Organization Name (eg, company) [Internet Widgits Pty Ltd]:Oiraya Factory
  Common Name (e.g. server FQDN or YOUR name) []:ebith
openssl ca -in client.csr -out client.crt -days 3650 -extensions feelmy_net -batch
openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12
rm client.csr client.crt client.key
chmod 400 client.p12

雑感とか

今思うとディレクトリは名前の変更にとどめたほうがファイルがごちゃっとならなくて良かったっぽい。
普通にCommon Nameを*.feelmy.netにして証明書を作るとfeelmy.netで通用しない。
それを突破するにはSubject Alternative Nameを使うしかないっぽいけどSANを使うとopenssl.cnfの編集を避けられないようでつらい。

作った証明書類はこんな感じにリネームしといた。

mv cacert.pem oiraya-ca.pem
mv cert.key feelmy.net.key
mv cert.crt feelmy.net.crt
mv client.p12 feelmy.net.p12

参考にしたとこ