この記事について
OpenSSLを使ったルート証明書(オレオレ証明書)の作成方法を記載します。
OpenSSLコマンド
ルート証明書(オレオレ証明書)の作成
発行者とサブジェクトが同名のルート証明書を作成します。
RSA秘密鍵の生成
鍵長2048bitのRSA秘密鍵を生成する
$ openssl genrsa -des3 2048 > server.key
出力例
Loading 'screen' into random state - done
Generating RSA private key, 2048 bit long modulus
..............+++
.......................+++
e is 65537 (0x10001)
Enter pass phrase:test
Verifying - Enter pass phrase:test
署名リクエスト(request.csr)の作成
68年=24820日有効の設定例です。対話形式で証明書に記載するCN等の入力が促されます。
$ openssl req -new -x509 -days 24820 -key server.key -out request.csr
出力例
Enter pass phrase for server.key:
Loading 'screen' into random state - done
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Your City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your Company
Organizational Unit Name (eg, section) []:Your Section
Common Name (e.g. server FQDN or YOUR name) []:Your FQDN
Email Address []:Your Email
証明書の作成
$ openssl x509 -in request.csr -out server.crt
ダミーのCA認証局を使ってX509v3のサーバー証明書を発行する
ルート証明書では発行者とサブジェクトが同一でした。以下ではOpenSSL付属のCA.plツールを使って、発行者とサブジェクトの異なるサーバー証明書を発行します。
テスト用のルート認証局を新規作成
$/usr/lib/ssl/misc/CA.pl -newca
CAの秘密鍵のパスワードや、署名局の情報入力が促されるので適宜入力します。
C => JP
ST => Tokyo
O => Dmy Inc
OU => Dmy OU
CN => Dmy CN
成功すると、/usr/lib/ssl/misc/demoCAが作成され、必要な情報が格納されます。
テスト用のサーバー秘密鍵を作成
PEM形式の秘密鍵newkey.pemを作成します。
$openssl genrsa -des3 2048 > newkey.pem
作成した秘密鍵のパスワードを削除
$openssl rsa -in newkey.pem -out newkey.pem
テスト用のサーバー証明書署名要求(CSR)を作成
$openssl req -new -key newkey.pem -out newreq.pem
サーバー証明書のサブジェクトの入力が促されるので適宜入力します。
C => JP
ST => Tokyo
O => Corporation
OU => Management Center
CN => www.dmy.co.jp
テスト用のルート認証局を使って、サーバー証明書を発行する
PEM形式の証明書を発行します。
$/usr/lib/ssl/misc/CA.pl -signCA
生成されたnewcert.pemをcrtに変換
crtコンテナにPEM形式の証明書を格納します。
$openssl x509 -in newcert.pem -out server.crt
秘密鍵newkey.pemと証明書server.crtのペアをPKCS #12形式に変換
pfxコンテナに秘密鍵と証明書を格納します。
$openssl pkcs12 -export -inkey newkey.pem -in server.crt -out server.pfx
Password => test
この場合、パスワードが事実上の秘密情報になりますので、保管には十分注意が必要です。