サーバ証明書「CRT」の作り方には2通りあるようで、一つは商用CA認証局に依頼して作る方式。
もうひとつは自分でCA認証局を設立して、自己署名でサーバ証明書を作る方式。
2012y12m24d_153115582.png
当然、商用CA認証局を使うには費用が掛かります。

「秘密鍵」から始まって申請書「CSR」まではサーバ証明書「CRT」を持ちたいサーバ側の作業。
CA認証局はサーバから送られてきた申請書「CSR」を使ってサーバ証明書「CRT」を作る。

ここでは自己署名方式でサーバ証明書を作るので、CA認証局を開局して、申請書「CSR」からサーバ証明書「CRT」を作り出す作業を記す

CA認証局(Certificate Authority)の開局

既にインストール済みであるかと思うが、下記パッケージをインストール

[root@ca ~]# yum install openssl

その後、CA認証局の証明書(cacert.pem)を作成する。

[root@ca ~]# cd /etc/pki/tls/misc    *作業場所に移動
[root@ca misc]#
[root@ca misc]# /etc/pki/tls/misc/CA -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/CA/private/./cakey.pem'
Enter PEM pass phrase:                                           *パスフレーズを入力
Verifying - Enter PEM pass phrase:
-----
(中略)
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo                              *都道府県
Locality Name (eg, city) [Default City]:xxxxxxxx                         *区市町村名
Organization Name (eg, company) [Default Company Ltd]:chaperone          *会社名、組織名
Organizational Unit Name (eg, section) []:ca                             *会社での部署名
Common Name (eg, your name or your server's hostname) []:ca.chaperone.jp *CAのサイト名
Email Address []:xxxxxxxx@chaperone.jp                                   *メールアドレス
 
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.cnf
Enter pass phrase for /etc/pki/CA/private/./cakey.pem:       *再度パスフレーズを入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 13376842596636623013 (0xb9a41777d4d700a5)
        Validity
            Not Before: Jan 26 01:41:38 2014 GMT
            Not After : Jan 25 01:41:38 2017 GMT
        Subject:
            countryName               = JP
(中略)
            X509v3 Basic Constraints:
                CA:TRUE
Certificate is to be certified until Jan 25 01:41:38 2017 GMT (1095 days)
 
Write out database with 1 new entries
Data Base Updated
[root@ca misc]#

作成されたCA認証局の証明書は/etc/pki/CAに置かれる
*途中、ミス入力、やり直したいならCtrl-Dで終了させ、/etc/pki/CAの中身を削除する。rm -rf /etc/pki/CA/*

[root@ca misc]# cd ../../CA/
[root@ca CA]# pwd
/etc/pki/CA
[root@ca CA]# ls -l *.pem
-rw-r--r-- 1 root root 4497  1月 26 10:41 2014 cacert.pem   *CA認証局の証明書
-rw-r--r-- 1 root root 1054  1月 26 10:41 2014 careq.pem
[root@ca CA]#
[root@ca CA]# ls -l ./private/*.pem
-rw-r--r-- 1 root root 1834  1月 26 10:41 2014 ./private/cakey.pem   *CA認証局の秘密鍵
[root@ca CA]#

これでCA認証局の準備は完成

サーバ証明書を作成

CA認証局が出来たので、申請書(server.csr)からサーバ証明書(server.crt)を作成してみる

申請書は、サーバ証明書を使うサイトで

  • 秘密鍵の作成
    cd /etc/pki/tls/certs
    make server.key
  • 申請書の作成
    make server.csr

を経て作られる。出来たserver.csrをCA認証局に送ってサーバ証明書(server.crt)を発行します。

[root@ca ~]# openssl ca -out /root/server.crt -infiles /root/server.csr
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 13376842596636623014 (0xb9a41777d4d700a6)
        Validity
            Not Before: Jan 26 07:07:19 2014 GMT
            Not After : Jan 26 07:07:19 2015 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Tokyo
            organizationName          = chaperone
            organizationalUnitName    = ldap
            commonName                = ldap.chaperone.jp
            emailAddress              = xxxxxx@chaperone.jp
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                4F:D1:F9:BE:42:95:7F:3D:70:FC:28:39:32:9E:CB:4A:96:F7:1D:F2
            X509v3 Authority Key Identifier:
                keyid:43:69:6E:5D:44:A3:0B:7D:46:3A:19:FB:FB:09:8C:9E:00:14:27:8B
 
Certificate is to be certified until Jan 26 07:07:19 2015 GMT (365 days)
Sign the certificate? [y/n]:y
 
 
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@ca ~]#

作成された/root/server.crt/etc/pki/CA/cacert.pemと共に要求元へ送ります。

string_mask

CA認証局でサーバ証明書を作成する際、下記エラーが発生する時があった。

[root@ca ~]# openssl ca -out /root/server.crt -infiles /root/server.csr
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for /etc/pki/CA/private/cakey.pem:
Check that the request matches the signature
Signature ok
The stateOrProvinceName field needed to be the same in the
CA certificate (Tokyo) and the request (Tokyo)
[root@ca ~]#

同じstateOrProvinceNameの値(Tokyo)なのにエラーとされてしまうのは、
/etc/pki/tls/openssl.cnfのstring_maskの値が、CA認証局と申請書を作ったマシンで違うため。
CentOSのバージョンでこの値が分かれているので注意が必要かも

  • CentOS5 string_mask = MASK:0x2002
  • CentOS6 string_mask = utf8only

この値を同じにすればエラーは回避される。

/root/server.crtが0バイトファイル

/root/server.crtが作られなくて、下記のようなメッセージが生じた場合、

  1
  2
  3
Sign the certificate? [y/n]:y
failed to update database
TXT_DB error number 2

/etc/pki/CA/index.txtの内容を消してから再度実行してみる。

  1
  2
  3
# rm /etc/pki/CA/index.txt
# touch /etc/pki/CA/index.txt
# openssl ca -out /root/server.crt -infiles /root/server.csr

な感じで。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2014-02-14 (金) 14:27:32 (1225d)