openssl コマンドを使って オレオレ証明書を作成する
の続きです
認証局
認証局 (CA:Certification Authority)とは、デジタル証明書を発行する機関である。
wikipedia 認証局
https://ja.wikipedia.org/wiki/%E8%AA%8D%E8%A8%BC%E5%B1%80
証明書の発行は有償です。 無償のところもある。
Digicert スタンダード・サーバID の場合 年間 5万5千円
https://www.digicert.com/jp/standard-ssl-certificates/
Lets Encrypt (無償)
https://letsencrypt.org/ja/
オレオレ認証局
開発用途のために、正規の認証局 から証明書を発行して貰うのは、費用も手間もかかる。
自前で認証局を作成し、気軽に証明書を発行する。
前回のオレオレ証明書では、ウェブブラウザにて警告が表示される。
今回は、警告なしで表示する証明書を目指す。 ルート認証局と中間認証局を作成する。 中間認証局がサーバ証明書を発行する。
下記を参考にした。
openssl オレオレ認証局で証明書発行 https://qiita.com/yutakachi/items/a250ccf415819996163b
オレだよオレオレ認証局で証明書つくる https://qiita.com/ll_kuma_ll/items/13c962a6a74874af39c6
ルート認証局を作成する
下記を参考にした。
macOS security command
https://ss64.com/osx/security.html
demoCAというディレクトリは openssl.cnf で設定されている。
% cd work # 任意のディレクトリに移動する
% mkdir demoCA/
% mkdir demoCA/private/
% mkdir demoCA/newcerts/
% touch demoCA/index.txt
% echo 00 > demoCA/serial
% /openssl genrsa -aes256 -out cakey.pem 2048
(3) 認証局の署名要求 (CSR: Certificate Signing Request) を作る
% openssl req -new -key cakey.pem -out cacert.csr
(5) CSR を確認する
% openssl req -noout -text -in cacert.csr
(4) 自己署名する
% openssl x509 -req -in cacert.csr -signkey cakey.pem -out cacert.pem -days 365
(5) 証明書の内容を確認する
% openssl x509 -text -noout -in cacert.pem
(6) 認証局の秘密鍵と証明書をワークエリアから認証局用のディレクトリにコピーする
% cp cakey.pem demoCA/private/ % cp cacert.pem demoCA/
(7) macOSの場合、キーチェーンに登録する
% sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" cacert.pem
中間認証局を作成する
下記を参考にした。
プライベートルート証明書・中間証明書・サーバ証明書の作り方
https://http2.try-and-test.net/openssl_simple_ca.htmlAny Purpose CA : Yes
http://openssl.6102.n7.nabble.com/quot-critical-CA-FALSE-quot-but-quot-Any-Purpose-CA-Yes-quot-td29933.html
(1) 中間認証局(Intermediate CA) の設定ファイル ca_inter.cnf を作成する
openssl.cnf をコピーする 「demoCA」を「interCA」(任意の名前でよい) に変更する
% cd work # 任意のディレクトリに移動する
% mkdir interCA/
% mkdir interCA/private/
% mkdir interCA/newcerts/
% touch interCA/index.txt
% echo 00 > interCA/serial
% openssl genrsa -aes256 -out inter_key.pem 2048
% openssl req -new -key inter_key.pem -out inter.csr
(5) CSR を確認する
% openssl req -noout -text -in inter.csr
(6) ルート認証局が中間認証局を署名するための拡張設定ファイル sign.cnf を作る
[ v3_ca ] basicConstraints = CA:true, pathlen:0 keyUsage = cRLSign, keyCertSign nsCertType = sslCA, emailCA
% openssl x509 -req -extfile sign.cnf -in inter.csr -out inter_cert.pem -extensions v3_ca -days 365
(8) 証明書の目的確認する
% openssl x509 -purpose -in inter_cert.pem -noout
下記が表示されれば OK
SSL server CA : Yes
(9) 中間認証局の秘密鍵と証明書をワークエリアから認証局用のディレクトリにコピーする
% cp inter_key.pem interCA/private/ % cp inter_cert.pem interCA/
サーバ証明書を作成する
下記を参考にした。
Apple、9月1日からサーバ証明書の最大有効期間を13カ月に制限
https://www.itmedia.co.jp/news/articles/2002/25/ news057.html
% openssl genrsa -aes256 -out server_key.pem 2048
サーバを起動するときに 秘密鍵のパスフレーズを要求される場合がある。 自動的に起動するように パスフレーズなしの秘密鍵を使用する。
% rsa -in taro_key.pem -out server_nopass_key.pem
% openssl req -new -key server_nopass_key.pem -out server.csr
コモンネーム は、サーバー名を入力する FQDNが望ましい ローカルネットの場合は /etc/hosts に合わせる 「localhost」も可
% openssl ca -in server.csr -out server_cert.pem -days 397
有効期限は最大で397日
(9) 証明書の内容を確認する
% openssl x509 -text -noout -in server_cert.pem
注意 Chrome の場合は、この証明書ではエラーになる。
下記を参照のこと。
openssl コマンドを使って SANを設定したサーバ証明書を発行する
ken-ohwada.hatenadiary.org