【Openssl】【Linux】 Openssl での証明書作成

■ 前提条件

OpenSSLのインストール

 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/33899152.html

■ 構築例1

[1] Webサーバの秘密鍵の生成

openssl genrsa -des 1024 > 【サーバの秘密鍵ファイル】で作成する
openssl genrsa -des 1024 > server.key

Generating RSA private key, 1024 bit long modulus
..............++++++
..............................++++++
e is 65537 (0x10001)
Enter pass phrase:【任意のパスフレーズを入力】
Verifying - Enter pass phrase:【任意のパスフレーズを再度入力】

[2] Webサーバの公開鍵の生成

openssl req -new -key 【サーバの秘密鍵ファイル】 > 【サーバの公開鍵ファイル】
openssl req -new -key server.key > server.csr
Enter pass phrase for server.key:
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.
 ----- 
色々聞かれるので、それぞれ入力する
Common Name (eg, your name or your server's hostname) []:【ここはサーバのホスト名】
・・・

[3] (オレオレ)証明書の作成

openssl x509 -in server.csr -req -signkey server.key > server.crt
Enter pass phrase for server.key:【[1]のパスフレーズを入力】

実際の利用例

Linux上の ApacheSSL通信を行う
 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36499526.html

■ 構築例2:プライベート認証局にて証明書発行

 * 認証局(CA:Certification Authority)を作成する

[1] 認証局(CA)の生成

sudo 【オプションの環境変数】 /etc/pki/tls/misc/CA -newca
# 認証局(CA)の生成
sudo DAYS="-days 3650" CADAYS="-days 3650" SSLEAY_CONFIG="-config /etc/pki/tls/openssl.cnf" /etc/pki/tls/misc/CA -newca

# 生成物の確認
sudo ls -l /etc/pki/CA/
 => 以下のファイルを確認
  + 「cacert.pem(CA証明書(CAの秘密鍵 cakey.pem で署名した公開鍵))」
  + 「careq.pem(CAの証明書署名要求(CAの自己署名前の公開鍵))」

sudo ls -l /etc/pki/CA/private/
 => 「cakey.pem(秘密鍵)」を確認

# CA証明書が正しく作成できているか確認
openssl x509 -in /etc/pki/CA/cacert.pem -text

# 秘密鍵は絶対に他人に見られてはならないので権限をrootだけにする
sudo chmod 600 /etc/pki/CA/private/cakey.pem
# 確認
sudo ls -l /etc/pki/CA/private/cakey.pem
openssl rsa -in 【秘密鍵】 -out 【秘密鍵(RSA暗号方式)】(パスフレーズを外す)
sudo openssl rsa -in /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/private/ca.key
生成物(認証局(CA)側)
`#`ファイル名説明
1/etc/pki/CA/cacert.pemCAの証明書ファイル
2/etc/pki/CA/careq.pemCAの証明書署名要求(CSR)ファイル
3/etc/pki/CA/private/cakey.pemCAの秘密鍵ファイル
4/etc/pki/CA/private/ca.keyCAの秘密鍵ファイル(パスフレーズなし)

[2] サーバの秘密鍵の生成

openssl genrsa -des3 -out 【サーバの秘密鍵】 1024
openssl genrsa -des3 -out server.key 1024
openssl rsa -in 【サーバの秘密鍵】 -out 【サーバの秘密鍵(RSA暗号方式)】(パスフレーズを外す)
openssl rsa -in server.key -out server.key

[3] サーバの証明書署名要求(CSR)の生成

openssl req -new -days 【有効期限期間】 -key 【サーバの秘密鍵】 -out 【サーバの証明書署名要求(CSR)】
openssl req -new -days 3650 -key server.key -out server.csr

[4] サーバの証明書の生成

openssl ca -in 【サーバの証明書署名要求(CSR)】 -keyfile 【CAの秘密鍵】 -out 【サーバの証明書】
sudo openssl ca -in server.csr -keyfile /etc/pki/CA/private/cakey.pem -out server.crt
生成物(サーバ側)
`#`ファイル名説明
1server.keyサーバの秘密鍵ファイル
2server.csrサーバの証明書署名要求(CSR)ファイル
3server.crtサーバの証明書ファイル

参考文献

https://thinkit.co.jp/cert/article/0706/3/7/2.htm
http://www.uetyi.com/server-const/apache-setting/entry-157.html
証明局(CA)
http://webos-goodies.jp/archives/simple_way_of_creating_ssl_certification.html
http://www.fc-lab.com/network/server/pki/openssl.html
http://qiita.com/mitzi2funk/items/602d9c5377f52cb60e54
http://server-setting.info/centos/private-ca-cert.html
http://www.webtech.co.jp/blog/optpix_labs/server/1159/

今後役に立ちそうなサイト

https://jamielinux.com/docs/openssl-certificate-authority/index.html