【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通信を行う => 以下の関連記事を参照のこと
Apache ~ Linux / 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
Apache ~ Linux / SSL設定編 ~
https://dk521123.hatenablog.com/entry/2016/11/11/230045