オレオレSSL証明書(自己署名証明書)を作るワンライナー

2017年2月12日

OpenSSL

オレオレ SSL 証明書(自己署名証明書)を作るワンライナーです。

$ openssl req -x509 -sha256 -nodes -days 3650 -newkey rsa:2048 -subj /CN=localhost -keyout server.key -out server.crt

上記のコマンドで server.key(秘密鍵) および server.crt(自己署名証明書) が作成されます。有効期限は 10 年(3650 日)。Common Name が決まっている場合は CN=localhost のところを FQDN に置き換えてもいいでしょう。

オレオレ証明書を作るだけならこれで終わりですが、せっかくなので秘密鍵(Private Key)と証明書署名要求(CSR)、証明書(CRT)を 1 つずつ順番に作る方法も紹介します。

目次

  1. 秘密鍵を作成
  2. 証明書署名要求を作成
  3. 自己署名証明書を作成

秘密鍵を作成

秘密鍵(Private Key)を作成

$ openssl genrsa 2048 > server.key

ファイルの中身を確認

$ openssl rsa -text < server.key
Private-Key: (2048 bit)
...

証明書署名要求を作成

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

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

コマンドを実行するといろいろ入力を求められますが、全部デフォルト Enter 連打で OK。オレオレ証明書なので、ちゃんとした値を入れてもブラウザから警告が出ます。FQDN が決まっていたら Common Name で FQDN を入力してもいいです。

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

ファイルの中身を確認

Subject に入力した値が表示されます

$ openssl req -text < server.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)

自己署名証明書を作成

自己署名証明書(CRT)を作成。これまでに作成した秘密鍵と証明書署名要求に対して、自分で署名を行います。有効期限は 10 年 (3650 日)。

$ openssl x509 -days 3650 -req -sha256 -signkey server.key < server.csr > server.crt

ファイルの中身を確認

$ openssl x509 -text < server.crt
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
ed:3d:bf:00:21:4c:ed:17
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd
Validity
Not Before: Feb 11 14:22:25 2017 GMT
Not After : Feb 11 14:22:25 2027 GMT
Subject: C=AU, ST=Some-State, O=Internet Widgits Pty Ltd
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)

Issuer は認証局の値。Subject は 先ほどの CSR で入力した値。自己署名なので Issuer と Subject に同じ値が入っています。
Validity は有効期限です。

-技術ブログ
-