【OpenSSL】OpenSSL ~ 証明書作成 ~

【0】前提条件

* OpenSSLのインストールが行われていること
 => 以下の関連記事を参照のこと

OpenSSL ~ Linux / 初期設定編 ~
https://dk521123.hatenablog.com/entry/2014/08/21/001440

【1】構築例1:Webサーバの証明書作成

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]のパスフレーズを入力】

4)補足:実際の利用例

Linux上の Apache でSSL通信を行う
 => 以下の関連記事を参照のこと

ApacheLinux / SSL設定編 ~
https://dk521123.hatenablog.com/entry/2016/11/11/230045

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

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

1)認証局(CA)の生成

[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

[2] パスフレーズを外す

# openssl rsa -in 【秘密鍵】 -out 【秘密鍵(RSA暗号方式)】

sudo openssl rsa -in /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/private/ca.key

[3] 生成物 (認証局(CA)側)の確認

# ファイル名 説明
1 /etc/pki/CA/cacert.pem CAの証明書ファイル
2 /etc/pki/CA/careq.pem CAの証明書署名要求(CSR)ファイル
3 /etc/pki/CA/private/cakey.pem CAの秘密鍵ファイル
4 /etc/pki/CA/private/ca.key CAの秘密鍵ファイル(パスフレーズなし)

2)サーバの秘密鍵の生成

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

# openssl genrsa -des3 -out 【サーバの秘密鍵】 1024
openssl genrsa -des3 -out server.key 1024

[2] パスフレーズを外す

# 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

生成物(サーバ側)

# ファイル名 説明
1 server.key サーバの秘密鍵ファイル
2 server.csr サーバの証明書署名要求(CSR)ファイル
3 server.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

関連記事

OpenSSL ~ Linux / 初期設定編 ~
https://dk521123.hatenablog.com/entry/2014/08/21/001440
OpenSSL ~ 重要データをやり取りする ~
https://dk521123.hatenablog.com/entry/2018/06/14/220754
Windows上での Opensslの設定と自己証明書作成
https://dk521123.hatenablog.com/entry/2013/12/07/103903
Windowsで Openssl を使って認証局を立てる
https://dk521123.hatenablog.com/entry/2014/02/28/000100
ApacheLinux / SSL設定編 ~
https://dk521123.hatenablog.com/entry/2016/11/11/230045