自前認証局およびサーバ証明書

openssl をインストール

# yum install openssl

ルート認証局(ルートCA)

ルートCA用の設定ファイル(openssl_rca.cnf)を作成

# cd /etc/pki/tls
# mkdir RCA
# cp openssl.cnf openssl_rca.cnf
# vi /etc/pki/tls/openssl_rca.cnf
#-- ディレクトリ変更(※2箇所あるので2箇所とも変更する)
dir = /etc/pki/tls/RCA # Where everything is kept
dir = /etc/pki/tls/RCA # TSA root directory
#-- 認証種別変更(コメントアウトを削除)
[ v3_ca ]
# Some might want this also
nsCertType = sslCA, emailCA
#-- サーバ証明書署名時のNetscape用認証種別変更(コメントアウトを削除)
[ usr_cert ]
# This is OK for an SSL server.
nsCertType = server
#-- 暗号化bit数の変更(2048bit)、sha256に変更
[ req ]
default_bits = 2048
default_md = sha256
#-- 証明書有効期間の変更(10年)、sha256に変更
[ CA_default ]
default_days = 3650 # how long to certify for
default_md = sha256 # use public key default MD

ルートCA用の生成スクリプト(RCA)を作成

# cd /etc/pki/tls/misc/
# cp CA RCA
# vi RCA
<code>
<file RCA>
#-- 31行目あたりに追加
CATOP=/etc/pki/tls/RCA
SSLEAY_CONFIG="-config /etc/pki/tls/openssl_rca.cnf"
</file>

=== ルートCAの作成 ===
<code>
# /etc/pki/tls/misc/RCA -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 2048 bit RSA private key
......................................+++
........................................+++
writing new private key to '/etc/pki/tls/RCA/private/./cakey.pem'
Enter PEM pass phrase:【認証局の秘密鍵のパスワード】
Verifying - Enter PEM pass phrase:【認証局の秘密鍵のパスワード確認】
-----
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) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Shinjuku-ku
Organization Name (eg, company) [Default Company Ltd]:【会社名】
Organizational Unit Name (eg, section) []:【部署名】
Common Name (eg, your name or your server's hostname) []:【ルート認証局名】
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/pki/tls/openssl_rca.cnf
Enter pass phrase for /etc/pki/tls/RCA/private/./cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
  Serial Number: 10114454966224013030 (0x8c5dc333fe77c6e6)
  Validity
  Not Before: Jan 25 10:28:35 2017 GMT
  Not After : Jan 25 10:28:35 2020 GMT
  Subject:
  countryName = JP
  stateOrProvinceName = Tokyo
  organizationName = 【会社名】
  organizationalUnitName = 【部署名】
  commonName = 【ルート認証局名】
  X509v3 extensions:
  X509v3 Subject Key Identifier:
  BA:88:C0:D8:F1:2B:CE:A8:17:44:9B:63:97:93:B4:A4:29:F4:81:4F
  X509v3 Authority Key Identifier:
  keyid:BA:88:C0:D8:F1:2B:CE:A8:17:44:9B:63:97:93:B4:A4:29:F4:81:4F

  X509v3 Basic Constraints:
  CA:TRUE
  Netscape Cert Type:
  SSL CA, S/MIME CA
Certificate is to be certified until Jan 25 10:28:35 2020 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated

配布用のderファイルを作成

# cd /etc/pki/tls/RCA
# openssl x509 -inform pem -in cacert.pem -outform der -out rca.der

RCA証明書の場所

RCA秘密鍵: /etc/pki/tls/RCA/private/cakey.pem
RCA証明書: /etc/pki/tls/RCA/cacert.pem
配布用のルートCA証明書: /etc/pki/tls/RCA/rca.der

中間認証局(中間CA)

中間CA用の設定ファイル(openssl_ica.cnf)を作成

# cd /etc/pki/tls
# mkdir ICA
# cp openssl_rca.cnf openssl_ica.cnf
# vi openssl_ica.cnf
:%s@/etc/pki/tls/RCA@/etc/pki/tls/ICA@g

中間CA用の生成スクリプト(ICA)を作成

# cd /etc/pki/tls/misc/
# cp RCA ICA
# vi ICA
#-- 33行目あたり
CATOP=/etc/pki/tls/ICA
SSLEAY_CONFIG="-config /etc/pki/tls/openssl_ica.cnf"

中間CAのルートCAに対する申請書(newkey.pem)を作成

# cd /etc/pki/tls/ICA
# /etc/pki/tls/misc/ICA -newreq
Generating a 2048 bit RSA private key
.............................+++
....................................................+++
writing new private key to 'newkey.pem'
Enter PEM pass phrase:【中間認証局の秘密鍵のパスワード】
Verifying - Enter PEM pass phrase:【中間認証局の秘密鍵のパスワード確認】
-----
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) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Shinjuku-ku
Organization Name (eg, company) [Default Company Ltd]:【会社名】
Organizational Unit Name (eg, section) []:【部署名】
Common Name (eg, your name or your server's hostname) []:【中間認証局名】
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Request is in newreq.pem, private key is in newkey.pem

ルート認証局を使って中間認証局の要求証明書を署名する

# cd /etc/pki/tls/ICA
# /etc/pki/tls/misc/RCA -signCA

⇒ パスワード入力し、y、yでnewcert.pemが作成される。

中間認証局を認証局として動作させる

# /etc/pki/tls/misc/ICA -newca
CA certificate filename (or enter to create)

⇒ /etc/pki/tls/ICA/newcert.pem を指定する。

中間認証局の秘密鍵をファイル名を変更して private ディレクトリへ移動する

# cd  /etc/pki/tls/ICA
# mv newkey.pem private/cakey.pem

配布用のderファイル、ApacheやNginx用CRTファイルを作成

# cd /etc/pki/tls/ICA
# openssl x509 -inform pem -in cacert.pem -outform der -out ica.der
# openssl x509 -in cacert.pem -out ica.crt

中間CA証明書の場所

中間CA証明書(ルートCAで署名済): /etc/pki/tls/ICA/ica.crt
配布用の中間CA証明書: /etc/pki/tls/ICA/ica.der

【証明書設置サーバ】

サーバー証明書の秘密鍵(server.key)作成

# mkdir /etc/ssl/[DOMAIN]
# cd /etc/ssl/[DOMAIN]
# openssl genrsa -out server.key 2048

暗号化方式 AES256

# openssl genrsa -aes256 -out server.key 2048
### パスワードを要求されるので解除
# openssl rsa -in server.key -out server.key

CSR(署名要求 server.csr)を作成

# openssl req -new -key server.key -out server.csr
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Shinjuku-ku
Organization Name (eg, company) [Default Company Ltd]:【会社名】
Organizational Unit Name (eg, section) []:【部署名】
Common Name (eg, your name or your server's hostname) []:【HOSTNAME】
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

【中間認証局サーバ】

中間認証局を使ってサーバ証明書を発行する

# cd /etc/pki/tls/private
証明書設置サーバで作成したserver.csrをコピペ
# vi newreq.pem
中間認証局と同一サーバなら
# cp server.csr /etc/pki/tls/private/newreq.pem
# /etc/pki/tls/misc/ICA -sign

⇒ パスワード入力し、y、yでnewcert.pemが作成される。

failed to update database TXT_DB error number2 発生時の対処(再発行時)
/etc/pki/tls/ICA/index.txt の内容を削除

# mkdir /etc/ssl/[DOMAIN]
使用したCSR「newreq.pem」を移動しておく
# mv /etc/pki/tls/private/newreq.pem /etc/ssl/[DOMAIN]/
「newcert.pem」ファイルを移動して、CRTファイルを作成
# mv /etc/pki/tls/private/newcert.pem /etc/ssl/[DOMAIN]/
# cd /etc/ssl/[DOMAIN]/
# openssl x509 -in newcert.pem -out server.crt
中間認証局と同一サーバなら
# cp /etc/pki/tls/ICA/ica.crt ./

【証明書設置サーバ】

# cd /etc/ssl/[DOMAIN]

証明書

中間認証局サーバ /etc/ssl/[DOMAIN]/server.crt をコピペ
# vi server.crt

中間証明書

中間認証局サーバ /etc/pki/tls/ICA/ica.crt をコピペ
# vi ica.crt
# vi /etc/httpd/conf.d/ssl.conf
#-- 認証局からもらったサーバ証明書
SSLCertificateFile /etc/ssl/[DOMAIN]/server.crt
#-- サーバ証明書のために作った秘密鍵
SSLCertificateKeyFile /etc/ssl/[DOMAIN]/server.key
#-- 中間証明書ファイル
SSLCertificateChainFile /etc/ssl/[DOMAIN]/ica.crt
#-- 認証局の公開鍵
SSLCACertificateFile

(旧) 猫好きモバイルアプリケーション開発者記録 オレオレ証明書を信頼のおけるSSL証明書にしてみる Vol.2 (認証局と証明書の作成)
http://mobileapplication.blog.fc2.com/blog-entry-23.html

コメントを入力:
N B T B E