Skip to content

Instantly share code, notes, and snippets.

@IMOKURI
Created August 31, 2021 04:26
Show Gist options
  • Select an option

  • Save IMOKURI/69fc8cfc56aebd215c3ab39e060ab2eb to your computer and use it in GitHub Desktop.

Select an option

Save IMOKURI/69fc8cfc56aebd215c3ab39e060ab2eb to your computer and use it in GitHub Desktop.

TLS 証明書の作り方

秘密鍵を作る

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) を作る

証明書を発行する、つまり公開鍵に署名を施す為には 証明書署名要求 (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

(おまけ) 自己署名証明書をCA証明書としてOSにインストールする

SSLの警告が出ないようになります。

OSによって方法が異なります。

Ubuntu
  • /usr/local/share/ca-certificates/ に、証明書 public-key.crt を配置します。
  • update-ca-certificates を実行します。

CentOS
  • /etc/pki/ca-trust/source/anchors/ に、証明書 public-key.crt を配置します。
  • update-ca-trust を実行します。
@IMOKURI
Copy link
Copy Markdown
Author

IMOKURI commented Dec 22, 2021

自己署名証明書の場合は CA証明書として 自身の証明書を使う。 public-key.crt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment