SSL証明書の作り方(自己証明書)

SSL証明書はSSL/TLS接続を行うときに必要になるものです。
TLSの中でサーバーが認証局に認証されたものであるという証明、通信の暗号化のための公開鍵の役割を持ちます。

そのための自己証明書の作り方です。
ローカルでの開発のためなどに使用します。
自己証明書:公開鍵を私有鍵で署名した公開鍵証明書
オレオレ証明書:自らが用意した認証局の秘密鍵で署名しようとするもの
ちなみに大手認証局のルート証明書に関しても自己証明書になります。理由としてはルート認証局は最上位の認証局のため自らの公開鍵の署名は自らの秘密鍵で行わなければいけないためです。

手順については大きく3つになります。
- OpenSSLコマンドを使って秘密鍵ファイル (server.key)を作る
- 証明書要求ファイル(server.csr)を作る
- 証明書要求ファイルに署名して証明書(server.crt)ができる

コマンドはそれぞれ以下になります。

RSA でサーバの秘密鍵を作成

openssl genrsa -aes128 2048 > server.key

証明書署名要求(CSR)を作成

openssl req -new -key server.key > server.csr

証明書を秘密鍵で署名して作成
本来は作成した証明書要求を認証局に送付して認証局の秘密鍵で署名してもらいます。

openssl x509 -in server.csr -days 365000 -req -signkey server.key > server.crt

詳細な流れとしては秘密鍵を作成し、CSRを作成するコマンドを実行するとOpenSSLが公開鍵を作成して、秘密鍵のハッシュと公開鍵でCSRを作ります。CSRは主にサーバの公開鍵、サーバ運営者の情報で構成されています。
SSLサーバ証明書とはこのように作成したCSRに対してCA局の電子署名を付与したものであり、CA局の秘密鍵がわからない限り、証明書の内容を改ざんすることはできないものとなっています。(CA局の秘密鍵での署名はCA局が公開している公開鍵でしか複合できないため)


この記事が気に入ったらサポートをしてみませんか?