openssl genrsa 4096 > private-key.pem
標準出力出力される鍵はPEMエンコードされているので、ファイル名も.pemとしています。
秘密鍵であることがわかるように、private という文字列をファイル名に入れておくと良いでしょう。
openssl rsa -in private-key.pem -text -noout
で中身を確認できます。
openssl rsa -in private-key.pem -pubout -out public-key.pem
-outform オプションを指定していないので、PEMエンコードされた公開鍵が出力されます。
公開鍵であることがわかるようにpublic-key.pem としています。
openssl rsa -pubin -in public-key.pem -text -noout
で中身を確認できます。
証明書を発行する、つまり公開鍵に署名を施す為には 証明書署名要求 (Certificate Signing Request, CSR) というファイルを作成し、署名者に渡す必要があります。
ここでは、自分自身の秘密鍵を使った 自己署名証明書 を作ります。
自己署名の場合も一度CSRを作ったうえで署名を行います。
なお、 CSRの作成には秘密鍵が必要 です。公開鍵の所有者であることを第三者に証明してもらうわけですから、秘密鍵を持った人しかできないようになっているわけですね(おそらくCSR自体に署名が施す必要がある)。
openssl req -new -key private-key.pem > my-request.csr
必要事項入力の中で、Common name に
*.<domain>.<name>を使うとワイルドカード証明書が作れます
openssl req -in my-request.csr -text -noout
で中身を確認できます。
証明書発行機関(CA)は、証明書の発行申込書であるCSR(証明書署名要求)ファイルを受け取って証明書を発行します。
証明書発行の際は、CA局自身の証明書や秘密鍵を使って発行します。
自己署名証明書を発行する場合は -CA オプションの代わりに -signkey オプションを使って自分自身の秘密鍵を指定します。
openssl x509 -req -in my-request.csr -signkey private-key.pem -out public-key.crt -days 3650
-signkeyで指定した private-key.pem が署名用の秘密鍵で、上の例では自分自身の秘密鍵を指定しています。公開鍵に自分自身の秘密鍵で署名を施して証明書を作っているため、 自己署名 と言われています。
/etc/kubernetes/pki 配下に配置します。
kubeconfig のファイルパスに配置したパスを使用します。
openssl x509 -in public-key.crt -pubkey -noout
SSLの警告が出ないようになります。
OSによって方法が異なります。
/usr/local/share/ca-certificates/に、証明書public-key.crtを配置します。update-ca-certificatesを実行します。
/etc/pki/ca-trust/source/anchors/に、証明書public-key.crtを配置します。update-ca-trustを実行します。
自己署名証明書の場合は CA証明書として 自身の証明書を使う。
public-key.crt