Help us understand the problem. What is going on with this article?

X.509 ルート証明書、ルート認証局をOpenSSLで作成する

More than 1 year has passed since last update.

この記事について

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

この場合、パスワードが事実上の秘密情報になりますので、保管には十分注意が必要です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away