LANプロトコルトレーニング > OpenSSL for Windows

OpenSSL for Windows

Windows版 OpenSSLを使ってCA局、サーバ証明書、クライアント証明書を作り、Apacheでこれら証明書を使ってみましょう。ここではこの手順を説明します。

注意
この情報は、私の勉強の過程で作成したものです。正しいと思って書いているのですが、間違えているかもしれません。情報を鵜呑みにしないでください。

目次

1.ダウンロード
2.インストール
2−1.何がインストールされたのか確認しましょう
3.プライベートCA局を作る
4.証明書の作成(サーバ認証)
4−1.証明書と秘密鍵をサーバにコピーする
4−2.セキュリティ警告を出さないようにするには
5.クライアント認証
5−1.クライアント証明書(PKCS12)をブラウザにインポート
5−2.Apacheでクライアント認証の設定
5−3.クライアントからアクセスしてみる

ダウンロード

http://www.openssl.org/related/binaries.htmlhttp://www.slproweb.com/products/Win32OpenSSL.html のリンクがあります。これをクリックするとDownload Win32 OpenSSL があります。ここからダウンロードしてください。

2006年4月現在、最新バージョンがWin32 OpenSSL v0.9.8aでしたので、これをダウンロードすることにします。

OpenSSL for Windowsを動作させるにはPerlが必要なようです。(Active Perlを事前にインストールしておいてください。)

インストール

ダウンロードしたファイルをダブルクリックします。
セキュリティの警告が出ますが、「実行」をクリックします。
コマンドプロンプトを開いていると、下のメッセージが出ます。
コマンドプロンプトを全て閉じてOKボタンを押します。
Nextをクリックします。
License Agreementに I accept the agreementをチェックし、Nextをクリックします。
OpenSSLをインストールするフォルダを選択し、Nextをクリックします。
スタートメニューのフォルダを選択し、Nextをクリック。
確認画面です。Installをクリックします。
インストール開始。
インストール完了。Finishをクリックします。

何がインストールされたのか確認しましょう

コマンドプロンプトを起動します。
スタート > すべてのプログラム(P) > アクセサリ > コマンドプロンプト
C:\>
C:\>cd \openssl

C:\OpenSSL>
OpenSSLフォルダの中には、以下のフォルダやファイルがあります。
C:\OpenSSL>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 54A5-8EF0 です

 C:\OpenSSL のディレクトリ

2006/04/08  23:41    <DIR>          .
2006/04/08  23:41    <DIR>          ..
2006/04/08  23:41    <DIR>          bin
2005/10/11  06:16           337,786 changes.txt
2006/04/08  23:41    <DIR>          exp
2005/10/11  06:16            38,277 faq.txt
2006/04/08  23:41    <DIR>          include
2006/04/08  23:41    <DIR>          lib
2005/04/25  17:42             6,406 license.txt
2005/10/11  06:16            19,042 news.txt
2004/05/10  18:22            30,423 OpenSSLhelp.chm
2006/04/08  23:41    <DIR>          perl
2005/10/11  06:16             8,126 readme.txt
2003/08/05  21:57            64,000 regref.exe
2003/08/09  09:31            69,120 sslcopy.exe
2006/04/08  23:42            25,816 unins000.dat
2006/04/08  23:19           667,914 unins000.exe
              10 個のファイル           1,266,910 バイト
               7 個のディレクトリ   6,758,416,384 バイトの空き領域
binの下を見ましょう。
C:\OpenSSL>cd bin

C:\OpenSSL\bin>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 54A5-8EF0 です

 C:\OpenSSL\bin のディレクトリ

2006/04/08  23:41    <DIR>          .
2006/04/08  23:41    <DIR>          ..
2005/11/03  11:50            16,384 bftest.exe
2005/11/03  11:50            32,768 bntest.exe
2005/10/11  06:21             5,776 CA.pl
2005/11/03  11:50            16,384 casttest.exe
2005/11/03  11:50            24,576 destest.exe
2005/11/03  11:50            16,384 dhtest.exe
2005/11/03  11:50            16,384 dsatest.exe
2005/11/03  11:50            16,384 ecdhtest.exe
2005/11/03  11:50            16,384 ecdsatest.exe
2005/11/03  11:50            69,632 ectest.exe
2005/11/03  11:50            16,384 enginetest.exe
2005/11/03  11:50            20,480 evp_test.exe
2005/11/03  11:50            16,384 exptest.exe
2005/11/03  11:50            16,384 hmactest.exe
2005/11/03  11:50            16,384 ideatest.exe
2005/11/03  11:50            16,384 md2test.exe
2005/11/03  11:50            16,384 md4test.exe
2005/11/03  11:50            16,384 md5test.exe
2005/09/16  08:20             9,687 openssl.cnf
2005/11/03  11:50           315,392 openssl.exe
2006/04/08  23:41    <DIR>          PEM
2005/11/03  11:50            16,384 randtest.exe
2005/11/03  11:50            16,384 rc2test.exe
2005/11/03  11:50            16,384 rc4test.exe
2005/11/03  11:50            16,384 rmdtest.exe
2005/11/03  11:50            16,384 rsa_test.exe
2005/11/03  11:50            16,384 sha1test.exe
2005/11/03  11:50            16,384 sha256t.exe
2005/11/03  11:50            16,384 sha512t.exe
2005/11/03  11:50            16,384 shatest.exe
2005/11/03  11:50            32,768 ssltest.exe
              30 個のファイル             871,527 バイト
               3 個のディレクトリ   6,758,400,000 バイトの空き領域
openssl.exe、openssl.cnf、CA.plがあります。これらのファイルを使って、CA局を作ったり証明書を作ったり、証明書に署名したりします。
opensslのバージョンを確認します。
C:\OpenSSL\bin>openssl version
OpenSSL 0.9.8a 11 Oct 2005
openssl.cnfの中身を見てみましょう。
C:\OpenSSL\bin>type openssl.cnf | more
#
# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#

# This definition stops the following lines choking if HOME isn't
# defined.
HOME                    = .
RANDFILE                = $ENV::HOME/.rnd

# Extra OBJECT IDENTIFIER info:
#oid_file               = $ENV::HOME/.oid
oid_section             = new_oids

<.....省略.....>

[ CA_default ]

dir             = ./demoCA              # Where everything is kept
certs           = $dir/certs            # Where the issued certs are kept
crl_dir         = $dir/crl              # Where the issued crl are kept
database        = $dir/index.txt        # database index file.
#unique_subject = no                    # Set to 'no' to allow creation of
                                        # several ctificates with same subject.
new_certs_dir   = $dir/newcerts         # default place for new certs.

certificate     = $dir/cacert.pem       # The CA certificate
serial          = $dir/serial           # The current serial number
crlnumber       = $dir/crlnumber        # the current crl number
                                        # must be commented out to leave a V1 CRL
crl             = $dir/crl.pem          # The current CRL
private_key     = $dir/private/cakey.pem# The private key
RANDFILE        = $dir/private/.rand    # private random number file

<.....省略.....>

[ usr_cert ]

# These extensions are added when 'ca' signs a request.

# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.

basicConstraints=CA:FALSE

# Here are some examples of the usage of nsCertType. If it is omitted
# the certificate can be used for anything *except* object signing.

# This is OK for an SSL server.
# nsCertType                    = server

# For an object signing certificate this would be used.
# nsCertType = objsign

# For normal client use this is typical
# nsCertType = client, email

# and for everything including object signing:
# nsCertType = client, email, objsign

# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment

# This will be displayed in Netscape's comment listbox.
nsComment                       = "OpenSSL Generated Certificate"

<.....省略......>

[ v3_ca ]


# Extensions for a typical CA


# PKIX recommendation.

subjectKeyIdentifier=hash

authorityKeyIdentifier=keyid:always,issuer:always

# This is what PKIX recommends but some broken software chokes on critical
# extensions.
#basicConstraints = critical,CA:true
# So we do this instead.
basicConstraints = CA:true

# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign

# Some might want this also
# nsCertType = sslCA, emailCA

<.....省略.....>

プライベートCA局を作る

プライベートCA局を作ります。
C:\OpenSSL\bin>CA.pl -newca
CA certificate filename (or enter to create)
                                      <---エンター
Making CA certificate ...
Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
....................................++++++
......++++++
writing new private key to './demoCA/private/cakey.pem'
Enter PEM pass phrase:        <---CA局秘密鍵のパスフレーズを適当に入力
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) [AU]:JP
State or Province Name (full name) [Some-State]:demoCA_Tokyo
Locality Name (eg, city) []:demoCA_City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:demoCA_Company
Organizational Unit Name (eg, section) []:demoCA_Unit
Common Name (eg, YOUR name) []:admin
Email Address []:admin@democa.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:              <---エンター
An optional company name []:          <---エンター
Using configuration from C:\OpenSSL\bin\openssl.cnf
Loading 'screen' into random state - done
Enter pass phrase for ./demoCA/private/cakey.pem:  <---先ほど設定したCA局パスフレーズを入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            bb:09:d3:0a:75:79:63:0b
        Validity
            Not Before: Apr  9 13:06:58 2006 GMT
            Not After : Apr  8 13:06:58 2009 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = demoCA_Tokyo
            organizationName          = demoCA_Company
            organizationalUnitName    = demoCA_Unit
            commonName                = admin
            emailAddress              = admin@democa.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:TRUE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04
            X509v3 Authority Key Identifier:
                keyid:44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04

Certificate is to be certified until Apr  8 13:06:58 2009 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated
demoCAというディレクトリができました。
このディレクトリは、openssl.cnfの [ CA_default ]の下の dir = ./demoCAで指定されていたディレクトリです。
C:\OpenSSL\bin>dir

<.....省略.....>

2006/04/09  22:06    <DIR>          demoCA

<.....省略.....>
demoCAの中を見てみましょう。
C:\OpenSSL\bin>cd demoCA

C:\OpenSSL\bin\demoCA>dir

2006/04/09  22:06             3,300 cacert.pem
2006/04/09  22:06               720 careq.pem
2006/04/09  22:04    <DIR>          certs
2006/04/09  22:04    <DIR>          crl
2006/04/09  22:06               135 index.txt
2006/04/09  22:06                21 index.txt.attr
2006/04/09  22:04                 0 index.txt.old
2006/04/09  22:06    <DIR>          newcerts
2006/04/09  22:04    <DIR>          private
2006/04/09  22:06                17 serial

C:\OpenSSL\bin\demoCA>dir private

2006/04/09  22:06               963 cakey.pem
careq.pemの中を見てみましょう。中身は、証明書の発行要求(CSR)です。
C:\OpenSSL\bin\demoCA>cd ..

C:\OpenSSL\bin>openssl req -in demoCA\careq.pem -text
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=JP, ST=demoCA_Tokyo, L=demoCA_City, 
O=demoCA_Company, OU=demoCA_Unit, CN=admin/emailAddress=admin@democa.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:92:d1:15:60:41:63:70:92:0a:aa:83:5b:d9:22:
                    93:b5:53:2a:5c:59:ff:fe:10:11:e4:4d:62:93:37:
                    f8:aa:97:dd:a3:a8:9b:79:b3:8b:c6:81:c7:ff:d3:
                    be:da:37:37:2b:57:89:f9:49:de:b4:a1:b2:7b:4b:
                    2b:51:d3:95:36:e0:12:b1:2c:1e:ff:fc:f2:32:04:
                    85:a6:a9:aa:ff:41:44:a9:51:4e:cb:ab:41:e5:76:
                    69:bc:f7:98:a9:24:d1:85:56:a9:c1:fd:76:55:13:
                    55:0d:d0:5c:33:c9:77:0f:ad:94:47:3f:13:2e:06:
                    3c:0b:0b:7c:14:87:aa:79:91
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption
        88:91:df:c1:8f:30:c2:39:32:cc:a1:97:1d:87:94:c8:99:54:
        0f:3c:d0:f4:85:c0:1d:bd:58:bb:46:36:4f:e4:74:40:d7:61:
        1f:bd:84:0e:61:12:11:a8:76:25:a4:5b:71:67:e6:2f:84:fb:
        4a:a3:aa:2e:f0:82:a5:71:b3:d8:af:87:71:c2:24:ab:b5:eb:
        f9:46:57:0e:29:f8:d9:58:98:af:45:00:16:43:71:af:3f:79:
        de:34:56:09:bc:e3:d7:fc:32:26:e0:db:2a:bb:82:ea:ca:e6:
        40:11:c5:01:ae:02:cd:db:d1:34:fe:06:6c:c8:39:64:e5:21:
        4b:e7
-----BEGIN CERTIFICATE REQUEST-----
MIIB2zCCAUQCAQAwgZoxCzAJBgNVBAYTAkpQMRUwEwYDVQQIFAxkZW1vQ0FfVG9r
eW8xFDASBgNVBAcUC2RlbW9DQV9DaXR5MRcwFQYDVQQKFA5kZW1vQ0FfQ29tcGFu
eTEUMBIGA1UECxQLZGVtb0NBX1VuaXQxDjAMBgNVBAMTBWFkbWluMR8wHQYJKoZI
hvcNAQkBFhBhZG1pbkBkZW1vY2EuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
iQKBgQCS0RVgQWNwkgqqg1vZIpO1UypcWf/+EBHkTWKTN/iql92jqJt5s4vGgcf/
077aNzcrV4n5Sd60obJ7SytR05U24BKxLB7//PIyBIWmqar/QUSpUU7Lq0Hldmm8
95ipJNGFVqnB/XZVE1UN0FwzyXcPrZRHPxMuBjwLC3wUh6p5kQIDAQABoAAwDQYJ
KoZIhvcNAQEFBQADgYEAiJHfwY8wwjkyzKGXHYeUyJlUDzzQ9IXAHb1Yu0Y2T+R0
QNdhH72EDmESEah2JaRbcWfmL4T7SqOqLvCCpXGz2K+HccIkq7Xr+UZXDin42ViY
r0UAFkNxrz953jRWCbzj1/wyJuDbKruC6srmQBHFAa4CzdvRNP4GbMg5ZOUhS+c=
-----END CERTIFICATE REQUEST-----
cacert.pemの中身を見てみましょう。中身は、careq.pemに自らがCA局として署名し、証明書を作成したものです。
C:\OpenSSL\bin>openssl x509 -in demoCA\cacert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            bb:09:d3:0a:75:79:63:0b
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=JP, ST=demoCA_Tokyo, O=demoCA_Company, OU=demoCA_Unit,
 CN=admin/emailAddress=admin@democa.com
        Validity
            Not Before: Apr  9 13:06:58 2006 GMT
            Not After : Apr  8 13:06:58 2009 GMT
        Subject: C=JP, ST=demoCA_Tokyo, O=demoCA_Company, OU=demoCA_Unit,
 CN=admin/emailAddress=admin@democa.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:92:d1:15:60:41:63:70:92:0a:aa:83:5b:d9:22:
                    93:b5:53:2a:5c:59:ff:fe:10:11:e4:4d:62:93:37:
                    f8:aa:97:dd:a3:a8:9b:79:b3:8b:c6:81:c7:ff:d3:
                    be:da:37:37:2b:57:89:f9:49:de:b4:a1:b2:7b:4b:
                    2b:51:d3:95:36:e0:12:b1:2c:1e:ff:fc:f2:32:04:
                    85:a6:a9:aa:ff:41:44:a9:51:4e:cb:ab:41:e5:76:
                    69:bc:f7:98:a9:24:d1:85:56:a9:c1:fd:76:55:13:
                    55:0d:d0:5c:33:c9:77:0f:ad:94:47:3f:13:2e:06:
                    3c:0b:0b:7c:14:87:aa:79:91
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:TRUE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04
            X509v3 Authority Key Identifier:
                keyid:44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04

    Signature Algorithm: sha1WithRSAEncryption
        6e:ed:bd:34:7c:7a:06:98:44:a8:2b:d6:4f:75:40:de:28:00:
        93:5d:ca:3d:12:d3:d8:4b:9a:c4:c3:b9:a2:d3:df:3e:ff:aa:
        fb:8a:72:2d:b6:cc:da:cc:e4:e2:1a:c5:1f:41:0a:00:3e:5b:
        0e:0b:28:6c:1d:44:13:0a:51:43:e0:e0:c7:37:b5:07:b2:a8:
        f7:7a:6d:30:f8:c3:f7:e0:fe:1a:89:b8:1b:73:1a:45:74:07:
        ff:03:1c:a8:c6:ba:04:24:ee:af:37:59:eb:96:91:f1:59:11:
        28:81:58:35:85:6e:f9:60:6a:86:d3:24:ae:da:d4:86:5b:fb:
        bc:78
-----BEGIN CERTIFICATE-----
MIIDBjCCAm+gAwIBAgIJALsJ0wp1eWMLMA0GCSqGSIb3DQEBBQUAMIGEMQswCQYD
VQQGEwJKUDEVMBMGA1UECBQMZGVtb0NBX1Rva3lvMRcwFQYDVQQKFA5kZW1vQ0Ff
Q29tcGFueTEUMBIGA1UECxQLZGVtb0NBX1VuaXQxDjAMBgNVBAMTBWFkbWluMR8w
HQYJKoZIhvcNAQkBFhBhZG1pbkBkZW1vY2EuY29tMB4XDTA2MDQwOTEzMDY1OFoX
DTA5MDQwODEzMDY1OFowgYQxCzAJBgNVBAYTAkpQMRUwEwYDVQQIFAxkZW1vQ0Ff
VG9reW8xFzAVBgNVBAoUDmRlbW9DQV9Db21wYW55MRQwEgYDVQQLFAtkZW1vQ0Ff
VW5pdDEOMAwGA1UEAxMFYWRtaW4xHzAdBgkqhkiG9w0BCQEWEGFkbWluQGRlbW9j
YS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJLRFWBBY3CSCqqDW9ki
k7VTKlxZ//4QEeRNYpM3+KqX3aOom3mzi8aBx//Tvto3NytXiflJ3rShsntLK1HT
lTbgErEsHv/88jIEhaapqv9BRKlRTsurQeV2abz3mKkk0YVWqcH9dlUTVQ3QXDPJ
dw+tlEc/Ey4GPAsLfBSHqnmRAgMBAAGjfjB8MAwGA1UdEwQFMAMBAf8wLAYJYIZI
AYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQW
BBRE6cwj2yU130TzCM31WjlqTOv8BDAfBgNVHSMEGDAWgBRE6cwj2yU130TzCM31
WjlqTOv8BDANBgkqhkiG9w0BAQUFAAOBgQBu7b00fHoGmESoK9ZPdUDeKACTXco9
EtPYS5rEw7mi098+/6r7inIttszazOTiGsUfQQoAPlsOCyhsHUQTClFD4ODHN7UH
sqj3em0w+MP34P4aibgbcxpFdAf/AxyoxroEJO6vN1nrlpHxWREogVg1hW75YGqG
0ySu2tSGW/u8eA==
-----END CERTIFICATE-----
private\cakey.pemの中身を見てみましょう。秘密鍵です。秘密鍵は誰にも見られないように大切に保管しておきましょう。下の秘密鍵は、ちょっと勉強のためだけに作ってみただけです。見てもらってかまいません。
C:\OpenSSL\bin>openssl rsa -in demoCA\private\cakey.pem -text
Enter pass phrase for demoCA\private\cakey.pem:   <---CA局の秘密鍵を作成する際に入力した
                                                      パスフレーズを入力します。
                                                      パスフレーズを知っている人だけが
                                                      秘密鍵を見ることができます。
Private-Key: (1024 bit)
modulus:
    00:92:d1:15:60:41:63:70:92:0a:aa:83:5b:d9:22:
    93:b5:53:2a:5c:59:ff:fe:10:11:e4:4d:62:93:37:
    f8:aa:97:dd:a3:a8:9b:79:b3:8b:c6:81:c7:ff:d3:
    be:da:37:37:2b:57:89:f9:49:de:b4:a1:b2:7b:4b:
    2b:51:d3:95:36:e0:12:b1:2c:1e:ff:fc:f2:32:04:
    85:a6:a9:aa:ff:41:44:a9:51:4e:cb:ab:41:e5:76:
    69:bc:f7:98:a9:24:d1:85:56:a9:c1:fd:76:55:13:
    55:0d:d0:5c:33:c9:77:0f:ad:94:47:3f:13:2e:06:
    3c:0b:0b:7c:14:87:aa:79:91
publicExponent: 65537 (0x10001)
privateExponent:
    20:8d:71:62:e5:3c:aa:22:07:71:65:2c:c1:49:34:
    5c:f8:f2:a4:85:64:08:2e:01:f9:8f:da:f2:6f:6f:
    98:4b:91:de:0e:ad:62:5f:97:f7:4c:a1:4e:ac:e1:
    5d:3a:ee:e5:92:44:4a:5c:c1:9f:65:56:d0:95:8b:
    26:5a:76:73:dd:64:42:21:b9:a6:38:f7:57:a5:b7:
    76:20:89:38:84:32:20:13:5f:08:d8:b7:64:1d:b6:
    0f:b3:7c:58:dc:30:b4:7f:45:f1:13:0e:90:a1:76:
    f8:1d:0f:34:83:60:32:88:c3:f1:b9:bc:b3:a9:29:
    18:e0:b7:f9:4d:c0:d5:ad
prime1:
    00:c1:f3:92:a9:44:8e:d9:b2:0d:05:da:7a:a7:19:
    0e:bc:a0:73:fc:94:1e:1d:1b:0f:1a:72:9b:68:05:
    0b:f9:b2:3c:5a:72:e1:e7:b8:b1:31:71:5e:d0:2c:
    35:6d:93:81:03:a1:33:1d:28:2f:3a:01:83:98:56:
    8a:9a:b9:17:37
prime2:
    00:c1:c9:39:80:5f:82:05:a4:a8:c1:4e:10:ee:95:
    f0:12:02:b8:b2:2b:a7:ba:70:1c:8b:ab:a2:00:1d:
    cc:b0:e6:4c:47:b2:98:d2:77:43:83:9b:87:9b:83:
    f2:d3:ac:e8:cb:b2:3c:d1:22:57:ae:36:70:f0:17:
    b5:69:0e:49:77
exponent1:
    2e:ce:61:6e:88:25:11:54:6e:e0:22:c1:c6:e1:bd:
    34:b8:64:45:68:59:7c:1c:b3:a0:66:58:2a:da:4c:
    f1:8d:9a:13:19:f6:7a:bd:8f:c5:a6:de:82:ce:a8:
    76:31:4a:c9:5d:75:c0:6b:9a:3a:1d:73:6c:a8:35:
    fa:f1:00:31
exponent2:
    27:a2:5c:5c:61:2c:5a:b3:1e:c0:ca:92:b3:f9:7e:
    ac:70:5a:0e:36:d7:8b:4e:3a:c8:66:46:2f:f7:e8:
    51:96:08:ab:f1:5f:48:4c:94:46:6a:9d:05:b5:ab:
    08:98:28:d4:e0:93:87:c2:9a:64:4b:46:36:14:e3:
    49:a5:5e:69
coefficient:
    00:b5:d9:a2:5f:3f:6b:12:ad:1a:6f:03:7c:e4:bb:
    74:7b:fd:3f:f6:a1:51:cd:f3:4b:db:8e:1d:0b:90:
    96:52:af:e6:1e:18:bd:d6:7b:5b:4e:34:c8:b5:d6:
    09:f6:3b:c6:e3:57:3d:63:80:a7:78:a4:b4:f3:cb:
    e2:c7:da:ef:9d
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCS0RVgQWNwkgqqg1vZIpO1UypcWf/+EBHkTWKTN/iql92jqJt5
s4vGgcf/077aNzcrV4n5Sd60obJ7SytR05U24BKxLB7//PIyBIWmqar/QUSpUU7L
q0Hldmm895ipJNGFVqnB/XZVE1UN0FwzyXcPrZRHPxMuBjwLC3wUh6p5kQIDAQAB
AoGAII1xYuU8qiIHcWUswUk0XPjypIVkCC4B+Y/a8m9vmEuR3g6tYl+X90yhTqzh
XTru5ZJESlzBn2VW0JWLJlp2c91kQiG5pjj3V6W3diCJOIQyIBNfCNi3ZB22D7N8
WNwwtH9F8RMOkKF2+B0PNINgMojD8bm8s6kpGOC3+U3A1a0CQQDB85KpRI7Zsg0F
2nqnGQ68oHP8lB4dGw8acptoBQv5sjxacuHnuLExcV7QLDVtk4EDoTMdKC86AYOY
VoqauRc3AkEAwck5gF+CBaSowU4Q7pXwEgK4siununAci6uiAB3MsOZMR7KY0ndD
g5uHm4Py06zoy7I80SJXrjZw8Be1aQ5JdwJALs5hboglEVRu4CLBxuG9NLhkRWhZ
fByzoGZYKtpM8Y2aExn2er2Pxabegs6odjFKyV11wGuaOh1zbKg1+vEAMQJAJ6Jc
XGEsWrMewMqSs/l+rHBaDjbXi046yGZGL/foUZYIq/FfSEyURmqdBbWrCJgo1OCT
h8KaZEtGNhTjSaVeaQJBALXZol8/axKtGm8DfOS7dHv9P/ahUc3zS9uOHQuQllKv
5h4YvdZ7W040yLXWCfY7xuNXPWOAp3iktPPL4sfa750=
-----END RSA PRIVATE KEY-----
上の手順で作成したdemoCAというディレクトリがCA局です。
これ以降では、証明書要求(CSR)を作成し、demoCAにて署名することで証明書を作成します。

証明書の作成(サーバ認証)

ここからの手順で生成する証明書はサーバ証明書として使おうと考えています。
証明書要求(CSR)を生成します。
C:\OpenSSL\bin>CA.pl -newreq
Loading 'screen' into random state - done
Generating a 1024 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) [AU]:JP
State or Province Name (full name) [Some-State]:sv_tokyo
Locality Name (eg, city) []:sv_akasaka
Organization Name (eg, company) [Internet Widgits Pty Ltd]:sv_internet_company
Organizational Unit Name (eg, section) []:sv_web_design
Common Name (eg, YOUR name) []:www.internet_company.com
Email Address []:admin@internet_company.com

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
何ができたのでしょう。
newkey.pem(秘密鍵)とnewreq.pem(証明書発行要求(CSR))が作られました。
C:\OpenSSL\bin>dir

<.....省略.....>

2006/04/09  23:23               963 newkey.pem
2006/04/09  23:23               761 newreq.pem

<.....省略.....>
それぞれ中身を見てみましょう。
まずはnewkey.pemです。これは秘密鍵です。誰にも見られないように保管してください。
C:\OpenSSL\bin>openssl rsa -in newkey.pem -text
Enter pass phrase for newkey.pem:   <---秘密鍵を作る際に入力したパスフレーズ
Private-Key: (1024 bit)
modulus:
    00:d9:22:34:55:62:cd:2f:d1:6e:f3:e2:89:90:e6:
    96:ba:a1:fd:8f:27:94:f3:79:26:65:88:0f:d3:32:
    82:4f:b3:24:b4:85:0b:8c:73:17:2f:51:6d:f3:14:
    d0:7f:06:27:bb:97:3b:1b:5b:f3:8b:f1:28:27:46:
    80:00:1f:a7:6c:e1:5f:ba:39:0c:e2:44:58:ce:56:
    cf:58:84:03:8b:c4:d4:b8:e4:26:fe:c8:1a:55:dd:
    13:97:db:ab:5e:79:83:8c:53:b3:03:57:c5:07:85:
    f1:c3:d7:9f:24:c5:09:3d:5f:77:5b:ef:4e:7d:78:
    a6:46:78:8a:af:5c:5e:9e:13
publicExponent: 65537 (0x10001)
privateExponent:
    35:dc:9f:40:c3:16:85:13:1d:c3:cf:e1:32:19:91:
    30:50:b8:b6:47:2a:52:cf:2d:b0:27:f5:4c:fd:8d:
    87:b9:b7:94:34:20:ae:41:6a:71:e9:70:2d:c9:6f:
    02:e3:82:fd:ac:c1:13:c3:56:81:d3:5b:93:8a:90:
    7b:f7:5e:2f:56:1f:56:57:17:f3:33:fe:97:4a:94:
    c4:05:d6:55:49:1a:63:1d:ce:85:e9:92:17:10:c2:
    24:fe:11:54:a0:b2:b8:13:3e:c4:34:72:84:fe:0f:
    38:6c:cd:51:d3:c5:60:15:3c:68:74:dd:3e:de:6a:
    05:c9:75:2b:88:c5:d4:91
prime1:
    00:f2:dd:04:9b:94:39:cd:df:89:e3:b2:cf:21:13:
    e5:62:4d:c5:c7:54:d1:ce:af:8d:08:f6:27:dd:42:
    6e:f8:8c:6e:4b:f6:a4:6c:3d:a7:ca:a0:23:29:da:
    86:cb:d0:bd:74:46:85:7a:9d:a1:05:87:29:6e:85:
    ee:7b:4a:dd:69
prime2:
    00:e4:e0:e6:ad:1a:84:77:43:a8:ed:cf:ca:ae:17:
    5c:b2:8f:12:5a:09:17:11:92:b5:82:62:69:dd:66:
    23:2b:5f:e2:d6:6b:23:ed:9c:9c:1c:d2:41:fd:c8:
    6a:ff:b4:8e:ae:09:85:ab:4a:66:31:d1:f7:24:e6:
    44:6a:52:a4:1b
exponent1:
    00:ab:f3:42:6c:e8:e0:98:5b:b9:e4:46:58:92:a1:
    e4:99:da:58:ba:cd:da:12:8d:86:bc:9e:94:10:fb:
    15:58:d3:0c:d0:a9:db:36:6b:dc:de:00:cd:84:b7:
    9d:12:b7:43:3c:0d:26:3a:6f:5a:6f:70:88:2c:21:
    95:7d:23:bf:69
exponent2:
    00:b6:2c:dc:ef:03:a0:54:5d:a2:64:47:74:87:c5:
    48:9f:47:89:cf:e8:54:58:44:71:fc:e9:e0:61:bd:
    1e:59:33:e5:15:ce:09:b6:e3:64:ce:fb:fc:52:c7:
    e7:82:c8:70:98:ce:33:7a:f7:a9:08:16:9b:a4:df:
    33:ad:7d:41:e9
coefficient:
    00:91:eb:c1:ab:b3:4d:71:c2:34:86:71:56:9d:9f:
    1f:1f:9d:e4:2d:ba:8c:fb:30:4e:62:ff:4a:1d:95:
    9c:9b:6f:3a:2c:76:18:da:15:2f:f0:53:98:18:6a:
    95:ca:95:cf:d1:1f:a4:c3:01:13:33:8b:c2:5b:87:
    ee:9b:53:57:16
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDZIjRVYs0v0W7z4omQ5pa6of2PJ5TzeSZliA/TMoJPsyS0hQuM
cxcvUW3zFNB/Bie7lzsbW/OL8SgnRoAAH6ds4V+6OQziRFjOVs9YhAOLxNS45Cb+
yBpV3ROX26teeYOMU7MDV8UHhfHD158kxQk9X3db7059eKZGeIqvXF6eEwIDAQAB
AoGANdyfQMMWhRMdw8/hMhmRMFC4tkcqUs8tsCf1TP2Nh7m3lDQgrkFqcelwLclv
AuOC/azBE8NWgdNbk4qQe/deL1YfVlcX8zP+l0qUxAXWVUkaYx3OhemSFxDCJP4R
VKCyuBM+xDRyhP4POGzNUdPFYBU8aHTdPt5qBcl1K4jF1JECQQDy3QSblDnN34nj
ss8hE+ViTcXHVNHOr40I9ifdQm74jG5L9qRsPafKoCMp2obL0L10RoV6naEFhylu
he57St1pAkEA5ODmrRqEd0Oo7c/Krhdcso8SWgkXEZK1gmJp3WYjK1/i1msj7Zyc
HNJB/chq/7SOrgmFq0pmMdH3JOZEalKkGwJBAKvzQmzo4JhbueRGWJKh5JnaWLrN
2hKNhryelBD7FVjTDNCp2zZr3N4AzYS3nRK3QzwNJjpvWm9wiCwhlX0jv2kCQQC2
LNzvA6BUXaJkR3SHxUifR4nP6FRYRHH86eBhvR5ZM+UVzgm242TO+/xSx+eCyHCY
zjN696kIFpuk3zOtfUHpAkEAkevBq7NNccI0hnFWnZ8fH53kLbqM+zBOYv9KHZWc
m286LHYY2hUv8FOYGGqVypXP0R+kwwETM4vCW4fum1NXFg==
-----END RSA PRIVATE KEY-----
次にnewreq.pemです。これは証明書発行要求(CSR)です。
C:\OpenSSL\bin>openssl req -in newreq.pem -text
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=JP, ST=sv_tokyo, L=sv_akasaka, O=sv_internet_company,
 OU=sv_web_design,
 CN=www.internet_company.com/emailAddress=admin@internet_company.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d9:22:34:55:62:cd:2f:d1:6e:f3:e2:89:90:e6:
                    96:ba:a1:fd:8f:27:94:f3:79:26:65:88:0f:d3:32:
                    82:4f:b3:24:b4:85:0b:8c:73:17:2f:51:6d:f3:14:
                    d0:7f:06:27:bb:97:3b:1b:5b:f3:8b:f1:28:27:46:
                    80:00:1f:a7:6c:e1:5f:ba:39:0c:e2:44:58:ce:56:
                    cf:58:84:03:8b:c4:d4:b8:e4:26:fe:c8:1a:55:dd:
                    13:97:db:ab:5e:79:83:8c:53:b3:03:57:c5:07:85:
                    f1:c3:d7:9f:24:c5:09:3d:5f:77:5b:ef:4e:7d:78:
                    a6:46:78:8a:af:5c:5e:9e:13
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption
        51:7e:8f:fb:b8:f7:56:bb:39:2d:1b:8d:fa:97:b8:2a:6d:98:
        e3:2c:80:ad:13:c4:3e:06:f4:9d:1c:e8:1b:77:9d:b5:e6:67:
        b7:f7:2c:f4:a2:43:69:ba:ed:15:65:8b:56:a4:7b:a8:c5:81:
        5a:8a:68:31:39:38:21:52:02:99:02:65:b2:dd:ff:79:96:72:
        0f:d4:4a:72:9b:15:2c:9d:71:fc:a6:86:62:f8:ba:59:74:b6:
        ed:e0:0c:2b:60:c9:0d:74:aa:39:55:22:c7:3f:60:65:c7:71:
        a2:dd:d7:92:4c:cc:61:7f:02:e2:28:cc:fb:6c:ab:cc:b9:7b:
        c1:c6
-----BEGIN CERTIFICATE REQUEST-----
MIIB+jCCAWMCAQAwgbkxCzAJBgNVBAYTAkpQMREwDwYDVQQIFAhzdl90b2t5bzET
MBEGA1UEBxQKc3ZfYWthc2FrYTEcMBoGA1UEChQTc3ZfaW50ZXJuZXRfY29tcGFu
eTEWMBQGA1UECxQNc3Zfd2ViX2Rlc2lnbjEhMB8GA1UEAxQYd3d3LmludGVybmV0
X2NvbXBhbnkuY29tMSkwJwYJKoZIhvcNAQkBFhphZG1pbkBpbnRlcm5ldF9jb21w
YW55LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2SI0VWLNL9Fu8+KJ
kOaWuqH9jyeU83kmZYgP0zKCT7MktIULjHMXL1Ft8xTQfwYnu5c7G1vzi/EoJ0aA
AB+nbOFfujkM4kRYzlbPWIQDi8TUuOQm/sgaVd0Tl9urXnmDjFOzA1fFB4Xxw9ef
JMUJPV93W+9OfXimRniKr1xenhMCAwEAAaAAMA0GCSqGSIb3DQEBBQUAA4GBAFF+
j/u491a7OS0bjfqXuCptmOMsgK0TxD4G9J0c6Bt3nbXmZ7f3LPSiQ2m67RVli1ak
e6jFgVqKaDE5OCFSApkCZbLd/3mWcg/USnKbFSydcfymhmL4ull0tu3gDCtgyQ10
qjlVIsc/YGXHcaLd15JMzGF/AuIozPtsq8y5e8HG
-----END CERTIFICATE REQUEST-----
newreq.pem(CSR)をCA局に送付し、CA局から返送された証明書をサーバにコピーし、使用することになります。
しかし、今回はCA局も証明書を必要としているサーバも同じコンピュータなので、送ったり返送したりする必要はありません。今生成したnewreq.pemにdemoCAが署名し、newcert.pemを作成することになります。
newreq.pemにdemoCAの秘密鍵(demoCA/private/cakey.pem)で署名し、newcert.pemを生成するには、CA.pl -signを使用します。
C:\OpenSSL\bin>CA.pl -sign
Using configuration from C:\OpenSSL\bin\openssl.cnf
Loading 'screen' into random state - done
Enter pass phrase for ./demoCA/private/cakey.pem:  <---CA局の秘密鍵を生成するときに
                                                       に入力したパスフレーズを入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            bb:09:d3:0a:75:79:63:0c
        Validity
            Not Before: Apr  9 14:34:08 2006 GMT
            Not After : Apr  9 14:34:08 2007 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = sv_tokyo
            localityName              = sv_akasaka
            organizationName          = sv_internet_company
            organizationalUnitName    = sv_web_design
            commonName                = www.internet_company.com
            emailAddress              = admin@internet_company.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                69:88:FE:86:2B:A6:2A:C6:21:17:B3:55:7E:3B:03:4F:C3:63:FB:62
            X509v3 Authority Key Identifier:
                keyid:44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04

Certificate is to be certified until Apr  9 14:34:08 2007 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
Signed certificate is in newcert.pem
newcert.pem(証明書)ができました。
C:\OpenSSL\bin>dir

<.....省略.....>

2006/04/09  23:34             3,412 newcert.pem
2006/04/09  23:23               963 newkey.pem
2006/04/09  23:23               761 newreq.pem

<.....省略.....>
newcert.pemの中身を見てみましょう。
C:\OpenSSL\bin>openssl x509 -in newcert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            bb:09:d3:0a:75:79:63:0c
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=JP, ST=demoCA_Tokyo, O=demoCA_Company, OU=demoCA_Unit, 
CN=admin/emailAddress=admin@democa.com
        Validity
            Not Before: Apr  9 14:34:08 2006 GMT
            Not After : Apr  9 14:34:08 2007 GMT
        Subject: C=JP, ST=sv_tokyo, L=sv_akasaka, O=sv_internet_company, 
OU=sv_web_design, CN=www.internet_company.com/emailAddress=admin@internet_company.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d9:22:34:55:62:cd:2f:d1:6e:f3:e2:89:90:e6:
                    96:ba:a1:fd:8f:27:94:f3:79:26:65:88:0f:d3:32:
                    82:4f:b3:24:b4:85:0b:8c:73:17:2f:51:6d:f3:14:
                    d0:7f:06:27:bb:97:3b:1b:5b:f3:8b:f1:28:27:46:
                    80:00:1f:a7:6c:e1:5f:ba:39:0c:e2:44:58:ce:56:
                    cf:58:84:03:8b:c4:d4:b8:e4:26:fe:c8:1a:55:dd:
                    13:97:db:ab:5e:79:83:8c:53:b3:03:57:c5:07:85:
                    f1:c3:d7:9f:24:c5:09:3d:5f:77:5b:ef:4e:7d:78:
                    a6:46:78:8a:af:5c:5e:9e:13
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                69:88:FE:86:2B:A6:2A:C6:21:17:B3:55:7E:3B:03:4F:C3:63:FB:62
            X509v3 Authority Key Identifier:
                keyid:44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04

    Signature Algorithm: sha1WithRSAEncryption
        7f:49:62:a8:4a:a9:83:26:65:19:b3:35:54:35:83:2e:52:1d:
        94:c6:d9:04:32:58:5f:58:1e:da:14:35:ec:c8:27:cf:bc:52:
        62:2f:96:06:5b:bb:05:f1:f3:b7:d7:81:25:af:7e:9c:3b:30:
        58:e2:ea:55:30:09:ec:9e:2f:45:73:8d:4b:d6:b9:51:78:ae:
        30:68:30:bc:0d:82:67:d0:df:b2:c8:7d:22:82:c1:ad:72:78:
        d2:7c:b0:f1:ef:33:e2:d2:9a:a1:9a:b6:f4:d7:e4:f8:94:af:
        ec:f2:90:dd:5b:9e:78:f2:51:b4:6b:f0:2a:ff:d0:53:90:f2:
        bf:2b
-----BEGIN CERTIFICATE-----
MIIDODCCAqGgAwIBAgIJALsJ0wp1eWMMMA0GCSqGSIb3DQEBBQUAMIGEMQswCQYD
VQQGEwJKUDEVMBMGA1UECBQMZGVtb0NBX1Rva3lvMRcwFQYDVQQKFA5kZW1vQ0Ff
Q29tcGFueTEUMBIGA1UECxQLZGVtb0NBX1VuaXQxDjAMBgNVBAMTBWFkbWluMR8w
HQYJKoZIhvcNAQkBFhBhZG1pbkBkZW1vY2EuY29tMB4XDTA2MDQwOTE0MzQwOFoX
DTA3MDQwOTE0MzQwOFowgbkxCzAJBgNVBAYTAkpQMREwDwYDVQQIFAhzdl90b2t5
bzETMBEGA1UEBxQKc3ZfYWthc2FrYTEcMBoGA1UEChQTc3ZfaW50ZXJuZXRfY29t
cGFueTEWMBQGA1UECxQNc3Zfd2ViX2Rlc2lnbjEhMB8GA1UEAxQYd3d3LmludGVy
bmV0X2NvbXBhbnkuY29tMSkwJwYJKoZIhvcNAQkBFhphZG1pbkBpbnRlcm5ldF9j
b21wYW55LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2SI0VWLNL9Fu
8+KJkOaWuqH9jyeU83kmZYgP0zKCT7MktIULjHMXL1Ft8xTQfwYnu5c7G1vzi/Eo
J0aAAB+nbOFfujkM4kRYzlbPWIQDi8TUuOQm/sgaVd0Tl9urXnmDjFOzA1fFB4Xx
w9efJMUJPV93W+9OfXimRniKr1xenhMCAwEAAaN7MHkwCQYDVR0TBAIwADAsBglg
hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
BBYEFGmI/oYrpirGIRezVX47A0/DY/tiMB8GA1UdIwQYMBaAFETpzCPbJTXfRPMI
zfVaOWpM6/wEMA0GCSqGSIb3DQEBBQUAA4GBAH9JYqhKqYMmZRmzNVQ1gy5SHZTG
2QQyWF9YHtoUNezIJ8+8UmIvlgZbuwXx87fXgSWvfpw7MFji6lUwCeyeL0VzjUvW
uVF4rjBoMLwNgmfQ37LIfSKCwa1yeNJ8sPHvM+LSmqGatvTX5PiUr+zykN1bnnjy
UbRr8Cr/0FOQ8r8r
-----END CERTIFICATE-----
生成した証明書関連ファイルを念のためCA局に保存しましょう。。。。。秘密鍵をCA局が保存しているっていうのはどうかと思いますが。。。
C:\OpenSSL\bin>cd demoCA

C:\OpenSSL\bin\demoCA>mkdir usr_certs

C:\OpenSSL\bin\demoCA>cd ..

C:\OpenSSL\bin>dir new*

2006/04/09  23:34             3,412 newcert.pem
2006/04/09  23:23               963 newkey.pem
2006/04/09  23:23               761 newreq.pem

C:\OpenSSL\bin>move newcert.pem demoCA\usr_certs\web_comp_cert.pem
C:\OpenSSL\bin>move newkey.pem demoCA\usr_certs\web_comp_key.pem
C:\OpenSSL\bin>move newreq.pem demoCA\usr_certs\web_comp_req.pem

C:\OpenSSL\bin>dir demoCA\usr_certs

2006/04/09  23:34             3,412 web_comp_cert.pem
2006/04/09  23:23               963 web_comp_key.pem
2006/04/09  23:23               761 web_comp_req.pem

証明書と秘密鍵をサーバにコピーする

作成した証明書と秘密鍵をLinuxで動作するApache+mod-ssl上で使うことにします。生成した証明書と秘密鍵をこのサーバにコピーする必要があります。ここではFTPでコピーします。
C:\OpenSSL\bin>cd demoCA\usr_certs

C:\OpenSSL\bin\demoCA\usr_certs>ftp 192.168.11.7
Connected to 192.168.11.7.
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
User (192.168.11.7:(none)): user1
331 Please specify the password.
Password:
230 Login successful. Have fun.
ftp> put web_comp_cert.pem                    <---証明書を転送
200 PORT command successful. Consider using PASV.
150 Go ahead make my day^W^W^Wsend me the data.
226 File receive OK.
ftp: 3412 bytes sent in 0.00Seconds 3412000.00Kbytes/sec.
ftp> put web_comp_key.pem                     <---秘密鍵を転送
200 PORT command successful. Consider using PASV.
150 Go ahead make my day^W^W^Wsend me the data.
226 File receive OK.
ftp: 963 bytes sent in 0.00Seconds 963000.00Kbytes/sec.
ftp> quit
221 Goodbye.
証明書と秘密鍵をLinuxサーバの適切なディレクトリに移動させる。
C:\OpenSSL\bin\demoCA\usr_certs>telnet 192.168.11.7
login: user1
Password for user1:
[user1@linux1 user1]$ su -
Password:                  <---superuserのパスワードを入力
[root@linux1 root]# cd /home/user1/
[root@linux1 user1]# ls
web_comp_cert.pem  web_comp_key.pem
[root@linux1 user1]# mv web_comp_cert.pem /etc/httpd/conf/ssl.crt/
[root@linux1 user1]# mv web_comp_key.pem /etc/httpd/conf/ssl.key/
Linuxサーバのssl.confを編集し、Apacheを再起動する。
[root@linux1 user1]# vi /etc/httpd/conf.d/ssl.conf
<VirtualHost _default_:443>
SSLCertificateFile /etc/httpd/conf/ssl.crt/web_comp_cert.pem
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/web_comp_key.pem
</VirtualHost>

[root@linux1 user1]# service httpd restart
httpdを停止中:                                             [  OK  ]
httpdを起動中: Apache/2.0.40 mod_ssl/2.0.40 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server new.host.name:443 (RSA)
Enter pass phrase:               <---web_comp_key.pem(秘密鍵)のパスフレーズを入力
Ok: Pass Phrase Dialog successful.
                                                           [  OK  ]
では、https://192.168.11.7でLinuxサーバに接続してみましょう。
セキュリティ証明書の名前が無効であるか、またはサイト名と一致しません。
という警告が出ています。クライアントPCで次のようにしてみましょう。
C:\WINDOWS\system32\drivers\etc\hosts (hosts.sumではない)をテキストエディタで開きます。そして、以下の行を追加し、保存してください。
192.168.11.7            www.internet_company.com
では、もう一度https://www.internet_company.comとします。警告が出なくなりました。
「このセキュリティ証明書は、信頼できる会社から発行されていません。証明書を表示して、この証明機関を信頼するかどうか決定してください。」という警告はまだ出ていますが、これは、demoCAなどという、私が勝手に作ったCA局によって署名された証明書をブラウザが信用していないということを言っています。
「証明書の表示」をクリックし、サーバが送ってきている証明書を見てみましょう。
発行者のところを見ると、この証明書を発行したのがdemoCAであることがわかります。
demoCAは、先ほど私が作成したCA局なので誰かがサーバに成りすましているわけではないはずです。セキュリティの警告の「はい」を押してみましょう。
上のようにLinuxサーバのコンテンツを見ることができました。
上ではdemoCAのことをブラウザが信用していないためにセキュリティ警告が出ました。
更に、この警告も出ないようにするには、ブラウザにdemoCAの証明書をインポートしておき、ブラウザにdemoCAを信用させます。その手順を次に説明します。

セキュリティ警告を出さないようにするには。(CA証明書をブラウザにインポート)

今のままでは、demoCAのことをクライアントのブラウザが信用していないために「セキュリティの警告」が出ていました。これを回避するには、ブラウザに「demoCAは信用できる認証局だ」と教える必要があります。
ブラウザにdemoCAの証明書(CA局を作ったときに生成されたcacert.pem)をインポートすることでこれが実現します。
では、実際にやってみましょう。

demoCAの証明書をクライアントPCにコピーしてください。コピーの仕方は、USBメモリで持ってきてもいいし、証明書をサーバで公開して、FTPやHTTPで持ってきてもかまいません。
私の場合、C:\の直下にコピーしました。
インターネットエクスプローラにインポートしましょう。
インターネットエクスプローラを起動し、ツール > インターネットオプション を選択してください。
コンテンツタブ > 証明書 を選択します。
信頼されたルート証明機関 > インポート を選択します。
次へ を選択します。
参照 をクリックし、先ほどクライアントPCにコピーしたcacert.pemの場所を指定します。(参照 をクリックした際、ファイルの種類 として、すべて を選択してください。)そして、次へ を選択します。
次へ を選択します。
「完了」を選択します。
「セキュリティ警告」が出ます。「はい」を選択ます。
「正しくインポートできました」と表示されますので、「OK」をクリックします。
これで、インターネットエクスプローラの「信頼された証明機関」の中に、あなたが作成したCA局の証明書がはいっているはずです。(実際に見ることもできますので、先ほどと同じ手順で確認してみてください。)

では、https://www.internet_company.comでもう一度接続してみましょう。
何の警告も出なくなりました。

クライアント認証

限られた人にだけ接続を許可するサーバでは、誰が接続しようとしているのか判断し許可・拒否する必要があります。
これを簡単に実現するには、Apacheで認証のような簡単なやり方もありますが、更に安全確実な認証が必要な場合には、クライアント証明書をユーザに配布し、その証明書によってクライアントの身分をサーバに対して証明する、というやり方もできます。

ここでは、OpenSSLを使用してクライアントで使用できる証明書を生成すること、クライアントへの証明書のインポート手順、Apacheの設定について説明します。

証明書の作り方に関しては、サーバ証明書を作ったときと同じです。サーバ証明書の生成も参考にしながら読み進めてください。
openssl.cnfはオリジナルのものを使用しましょう。

秘密鍵newkey.pemと証明書要求newreq.pemを作ります。
C:\OpenSSL\bin>CA.pl -newreq
Loading 'screen' into random state - done
Generating a 1024 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) [AU]:JP
State or Province Name (full name) [Some-State]:Osaka
Locality Name (eg, city) []:Sakai-city
Organization Name (eg, company) [Internet Widgits Pty Ltd]:internet_company
Organizational Unit Name (eg, section) []:eigyo
Common Name (eg, YOUR name) []:eigyo-taro
Email Address []:eigyo-taro@internet_company.com

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
                               <---証明書要求(CSR)がファイル名「newreq.pem」、
                                   秘密鍵がファイル名「newkey.pem」で
                                   生成された。
見てみよう。
C:\OpenSSL\bin>dir new*
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 54A5-8EF0 です

 C:\OpenSSL\bin のディレクトリ

2006/04/15  09:06               963 newkey.pem
2006/04/15  09:06               733 newreq.pem
               2 個のファイル               1,696 バイト
               0 個のディレクトリ   6,688,616,448 バイトの空き領域
C:\OpenSSL\bin>openssl rsa -in newkey.pem -text
Enter pass phrase for newkey.pem:
Private-Key: (1024 bit)
modulus:
    00:d9:e6:b0:ea:7c:40:95:63:0c:c0:24:64:1d:b9:
    00:a7:92:dc:a1:58:97:af:7b:e8:f8:17:98:45:69:
    88:bb:23:4c:10:45:f3:7d:f8:ad:14:47:5b:f8:9b:
    6f:bb:b8:22:27:f9:24:d1:cd:3f:2a:22:ac:39:a8:
    05:32:be:86:7e:c2:01:4e:e4:ad:b4:7b:5f:52:14:
    48:b4:f6:12:42:74:35:ad:aa:18:0b:b9:e6:df:5c:
    a9:2c:16:b9:4f:8c:9e:45:8d:99:01:21:28:e3:e6:
    6b:9e:26:ff:ce:ad:71:87:2d:fe:c2:6f:04:47:1d:
    24:e3:7a:91:e0:c5:9b:f5:ff
publicExponent: 65537 (0x10001)
privateExponent:
    68:8e:88:7f:cb:a5:55:c9:54:79:f2:3c:54:02:cc:
    ac:9c:0c:e0:22:d9:8e:2b:df:eb:03:af:5e:47:38:
    83:cb:79:19:29:e7:9f:9f:ae:b5:57:54:6b:63:72:
    66:da:01:11:bb:3c:0e:ab:f4:ce:2c:1b:06:03:78:
    93:13:d7:06:a2:f4:52:2a:10:00:96:e0:51:2f:c6:
    2a:37:65:47:52:2a:18:ee:d2:f8:a9:97:08:05:9b:
    da:ec:6e:a3:a0:a5:e1:eb:9a:f2:2d:4a:52:8a:9f:
    d7:47:6f:ae:79:06:1e:67:4f:da:ce:eb:ba:f6:ac:
    75:90:50:9a:67:85:46:59
prime1:
    00:f7:fe:5e:fd:7b:b4:64:f7:e8:b7:8c:4d:3d:31:
    a2:b0:cb:1f:1a:68:13:4e:90:df:71:39:d6:55:96:
    59:68:f6:85:74:46:2e:84:c0:cc:34:1f:83:9a:07:
    b8:21:95:e4:fe:4a:f0:6d:14:82:61:d9:e5:17:77:
    92:9a:d9:b1:23
prime2:
    00:e0:ef:9c:34:a4:f7:43:95:e2:de:8b:5d:a3:b3:
    12:35:a6:a8:a2:f2:f2:ac:ef:a0:29:ec:7c:48:2d:
    80:d0:3d:e0:4e:c0:7c:d2:92:15:64:a1:cf:41:57:
    ad:3b:93:ef:61:83:5d:b4:17:4c:f2:43:76:2d:d8:
    55:e6:50:8b:75
exponent1:
    70:99:ea:0d:94:66:a3:55:c1:2f:de:1f:90:02:82:
    89:5d:a1:20:bf:52:cc:e0:90:e3:fb:4b:eb:8e:99:
    c8:43:ee:f2:8d:8f:3f:ad:be:ca:87:e8:9c:3e:97:
    07:80:e4:f9:e5:92:e7:24:61:d3:06:39:b3:ff:11:
    ed:07:9d:1b
exponent2:
    00:ce:42:ea:3a:5c:0b:61:2e:50:9b:41:b0:dc:2b:
    98:c7:19:cc:09:a0:3e:67:d6:54:48:1d:52:d9:dc:
    e0:02:14:bb:5b:7b:a6:fa:70:7a:ad:8c:b3:40:77:
    e5:a2:7c:45:46:65:ef:c6:f4:96:da:90:82:0e:08:
    12:bc:df:9f:01
coefficient:
    00:80:c1:0b:70:34:76:b7:48:d4:95:80:56:9b:ee:
    af:74:c3:92:0a:5a:ca:f5:8d:08:a3:2a:49:9a:0a:
    29:42:7d:dc:a6:4c:7e:25:6d:e8:e2:59:66:ef:2a:
    82:e1:a1:23:73:0d:dd:76:b7:2c:29:b7:72:81:44:
    2d:85:fc:16:11
writing RSA key
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDZ5rDqfECVYwzAJGQduQCnktyhWJeve+j4F5hFaYi7I0wQRfN9
+K0UR1v4m2+7uCIn+STRzT8qIqw5qAUyvoZ+wgFO5K20e19SFEi09hJCdDWtqhgL
uebfXKksFrlPjJ5FjZkBISjj5mueJv/OrXGHLf7CbwRHHSTjepHgxZv1/wIDAQAB
AoGAaI6If8ulVclUefI8VALMrJwM4CLZjivf6wOvXkc4g8t5GSnnn5+utVdUa2Ny
ZtoBEbs8Dqv0ziwbBgN4kxPXBqL0UioQAJbgUS/GKjdlR1IqGO7S+KmXCAWb2uxu
o6Cl4eua8i1KUoqf10dvrnkGHmdP2s7ruvasdZBQmmeFRlkCQQD3/l79e7Rk9+i3
jE09MaKwyx8aaBNOkN9xOdZVlllo9oV0Ri6EwMw0H4OaB7ghleT+SvBtFIJh2eUX
d5Ka2bEjAkEA4O+cNKT3Q5Xi3otdo7MSNaaoovLyrO+gKex8SC2A0D3gTsB80pIV
ZKHPQVetO5PvYYNdtBdM8kN2LdhV5lCLdQJAcJnqDZRmo1XBL94fkAKCiV2hIL9S
zOCQ4/tL646ZyEPu8o2PP62+yofonD6XB4Dk+eWS5yRh0wY5s/8R7QedGwJBAM5C
6jpcC2EuUJtBsNwrmMcZzAmgPmfWVEgdUtnc4AIUu1t7pvpweq2Ms0B35aJ8RUZl
78b0ltqQgg4IErzfnwECQQCAwQtwNHa3SNSVgFab7q90w5IKWsr1jQijKkmaCilC
fdymTH4lbejiWWbvKoLhoSNzDd12tywpt3KBRC2F/BYR
-----END RSA PRIVATE KEY-----
C:\OpenSSL\bin>openssl req -in newreq.pem -text
Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=JP, ST=Osaka, L=Sakai-city, O=internet_company,
 OU=eigyo, CN=eigyo-taro/emailAddress=eigyo-taro@internet_company.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d9:e6:b0:ea:7c:40:95:63:0c:c0:24:64:1d:b9:
                    00:a7:92:dc:a1:58:97:af:7b:e8:f8:17:98:45:69:
                    88:bb:23:4c:10:45:f3:7d:f8:ad:14:47:5b:f8:9b:
                    6f:bb:b8:22:27:f9:24:d1:cd:3f:2a:22:ac:39:a8:
                    05:32:be:86:7e:c2:01:4e:e4:ad:b4:7b:5f:52:14:
                    48:b4:f6:12:42:74:35:ad:aa:18:0b:b9:e6:df:5c:
                    a9:2c:16:b9:4f:8c:9e:45:8d:99:01:21:28:e3:e6:
                    6b:9e:26:ff:ce:ad:71:87:2d:fe:c2:6f:04:47:1d:
                    24:e3:7a:91:e0:c5:9b:f5:ff
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha1WithRSAEncryption
        37:32:32:49:cf:9d:89:81:e6:91:5f:c3:7e:74:5a:13:3d:90:
        8d:5a:c8:44:4d:9f:53:92:7f:43:5a:4d:5c:9c:78:02:f1:87:
        3b:82:d7:b1:00:7c:11:7a:2e:a3:93:6f:04:b6:7f:c7:f9:c6:
        34:48:b3:0d:7c:c9:99:db:14:ab:3c:e6:50:c4:1a:0d:2d:40:
        ef:4d:02:09:95:2f:c0:7c:65:e2:70:1a:71:06:f0:93:a6:c8:
        7c:b8:37:f1:7b:c0:14:af:11:70:6f:2c:ba:e5:b6:96:a1:5d:
        d6:c8:3f:d6:93:a5:c0:7a:6d:e6:fb:d0:f6:9c:d2:d7:70:f6:
        9b:f6
-----BEGIN CERTIFICATE REQUEST-----
MIIB4zCCAUwCAQAwgaIxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVPc2FrYTETMBEG
A1UEBxMKU2FrYWktY2l0eTEZMBcGA1UEChQQaW50ZXJuZXRfY29tcGFueTEOMAwG
A1UECxMFZWlneW8xEzARBgNVBAMTCmVpZ3lvLXRhcm8xLjAsBgkqhkiG9w0BCQEW
H2VpZ3lvLXRhcm9AaW50ZXJuZXRfY29tcGFueS5jb20wgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBANnmsOp8QJVjDMAkZB25AKeS3KFYl6976PgXmEVpiLsjTBBF
8334rRRHW/ibb7u4Iif5JNHNPyoirDmoBTK+hn7CAU7krbR7X1IUSLT2EkJ0Na2q
GAu55t9cqSwWuU+MnkWNmQEhKOPma54m/86tcYct/sJvBEcdJON6keDFm/X/AgMB
AAGgADANBgkqhkiG9w0BAQUFAAOBgQA3MjJJz52JgeaRX8N+dFoTPZCNWshETZ9T
kn9DWk1cnHgC8Yc7gtexAHwRei6jk28Etn/H+cY0SLMNfMmZ2xSrPOZQxBoNLUDv
TQIJlS/AfGXicBpxBvCTpsh8uDfxe8AUrxFwbyy65baWoV3WyD/Wk6XAem3m+9D2
nNLXcPab9g==
-----END CERTIFICATE REQUEST-----
証明書要求にCA局が署名し、証明書を作ります。
C:\OpenSSL\bin>CA.pl -sign
Using configuration from C:\OpenSSL\bin\openssl.cnf
Loading 'screen' into random state - done
Enter pass phrase for ./demoCA/private/cakey.pem:   <---CA局秘密鍵のパスフレーズ
                                                        を入力。
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number:
            bb:09:d3:0a:75:79:63:0d
        Validity
            Not Before: Apr 15 00:55:35 2006 GMT
            Not After : Apr 15 00:55:35 2007 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Osaka
            localityName              = Sakai-city
            organizationName          = internet_company
            organizationalUnitName    = eigyo
            commonName                = eigyo-taro
            emailAddress              = eigyo-taro@internet_company.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                EE:52:73:7D:44:AE:50:0E:AF:20:53:75:58:CE:C8:CD:53:79:5A:DE
            X509v3 Authority Key Identifier:
                keyid:44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04

Certificate is to be certified until Apr 15 00:55:35 2007 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
Signed certificate is in newcert.pem
証明書newcert.pemができました。
C:\OpenSSL\bin>dir new*
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 54A5-8EF0 です

 C:\OpenSSL\bin のディレクトリ

2006/04/15  09:55             3,360 newcert.pem   <---これ
2006/04/15  09:06               963 newkey.pem
2006/04/15  09:06               733 newreq.pem
               3 個のファイル               5,056 バイト
               0 個のディレクトリ   6,688,595,968 バイトの空き領域
C:\OpenSSL\bin>openssl x509 -in newcert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            bb:09:d3:0a:75:79:63:0f
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=JP, ST=demoCA_Tokyo, O=demoCA_Company, OU=demoCA_Unit,
 CN=admin/emailAddress=admin@democa.com
        Validity
            Not Before: Apr 15 02:25:51 2006 GMT
            Not After : Apr 15 02:25:51 2007 GMT
        Subject: C=JP, ST=Osaka, L=Sakai-city, O=internet_company, OU=eigyo, 
CN=eigyo-taro/emailAddress=eigyo-taro@internet_company.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:d9:e6:b0:ea:7c:40:95:63:0c:c0:24:64:1d:b9:
                    00:a7:92:dc:a1:58:97:af:7b:e8:f8:17:98:45:69:
                    88:bb:23:4c:10:45:f3:7d:f8:ad:14:47:5b:f8:9b:
                    6f:bb:b8:22:27:f9:24:d1:cd:3f:2a:22:ac:39:a8:
                    05:32:be:86:7e:c2:01:4e:e4:ad:b4:7b:5f:52:14:
                    48:b4:f6:12:42:74:35:ad:aa:18:0b:b9:e6:df:5c:
                    a9:2c:16:b9:4f:8c:9e:45:8d:99:01:21:28:e3:e6:
                    6b:9e:26:ff:ce:ad:71:87:2d:fe:c2:6f:04:47:1d:
                    24:e3:7a:91:e0:c5:9b:f5:ff
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                1C:79:B9:0C:71:92:21:11:7B:6A:00:C7:23:09:88:12:20:4B:78:CD
            X509v3 Authority Key Identifier:
                keyid:44:E9:CC:23:DB:25:35:DF:44:F3:08:CD:F5:5A:39:6A:4C:EB:FC:04

    Signature Algorithm: sha1WithRSAEncryption
        10:b8:9c:5a:57:3a:e3:ef:42:9a:e8:d7:c1:c3:3e:32:0b:c3:
        03:54:12:b8:ee:ba:c0:b6:8a:23:12:b4:4f:0d:5b:c4:2d:51:
        4e:fe:bd:48:fa:18:3a:5e:79:e7:a4:bf:4b:cf:9d:38:25:06:
        15:3f:d4:af:d1:1b:12:8a:ad:d5:85:7d:fe:ee:d7:6c:07:df:
        3a:f6:3b:e5:85:00:83:b5:be:1e:eb:96:c5:8e:d4:46:52:bc:
        39:3e:13:b3:c0:4c:bf:8e:f4:cd:c4:1c:1e:ff:c5:35:c8:22:
        98:06:fa:bb:07:4f:bb:90:b5:a9:71:b5:af:80:60:b7:9b:97:
        c3:59
-----BEGIN CERTIFICATE-----
MIIDITCCAoqgAwIBAgIJALsJ0wp1eWMPMA0GCSqGSIb3DQEBBQUAMIGEMQswCQYD
VQQGEwJKUDEVMBMGA1UECBQMZGVtb0NBX1Rva3lvMRcwFQYDVQQKFA5kZW1vQ0Ff
Q29tcGFueTEUMBIGA1UECxQLZGVtb0NBX1VuaXQxDjAMBgNVBAMTBWFkbWluMR8w
HQYJKoZIhvcNAQkBFhBhZG1pbkBkZW1vY2EuY29tMB4XDTA2MDQxNTAyMjU1MVoX
DTA3MDQxNTAyMjU1MVowgaIxCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVPc2FrYTET
MBEGA1UEBxMKU2FrYWktY2l0eTEZMBcGA1UEChQQaW50ZXJuZXRfY29tcGFueTEO
MAwGA1UECxMFZWlneW8xEzARBgNVBAMTCmVpZ3lvLXRhcm8xLjAsBgkqhkiG9w0B
CQEWH2VpZ3lvLXRhcm9AaW50ZXJuZXRfY29tcGFueS5jb20wgZ8wDQYJKoZIhvcN
AQEBBQADgY0AMIGJAoGBANnmsOp8QJVjDMAkZB25AKeS3KFYl6976PgXmEVpiLsj
TBBF8334rRRHW/ibb7u4Iif5JNHNPyoirDmoBTK+hn7CAU7krbR7X1IUSLT2EkJ0
Na2qGAu55t9cqSwWuU+MnkWNmQEhKOPma54m/86tcYct/sJvBEcdJON6keDFm/X/
AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2Vu
ZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBQcebkMcZIhEXtqAMcjCYgSIEt4
zTAfBgNVHSMEGDAWgBRE6cwj2yU130TzCM31WjlqTOv8BDANBgkqhkiG9w0BAQUF
AAOBgQAQuJxaVzrj70Ka6NfBwz4yC8MDVBK47rrAtoojErRPDVvELVFO/r1I+hg6
XnnnpL9Lz504JQYVP9Sv0RsSiq3VhX3+7tdsB9869jvlhQCDtb4e65bFjtRGUrw5
PhOzwEy/jvTNxBwe/8U1yCKYBvq7B0+7kLWpcbWvgGC3m5fDWQ==
-----END CERTIFICATE-----

証明書をPKCS12形式に変換します。以下の表示では、-in newcert.pemの後ろで改行されていますが、opensslからeigyo-taro.p12までのコマンドは改行せずに入力してください。

C:\OpenSSL\bin>openssl pkcs12 -export -clcerts -inkey newkey.pem -in newcert.pem
 -out eigy-taro.p12
Loading 'screen' into random state - done
Enter pass phrase for newkey.pem:        <---証明書の秘密鍵のパスフレーズ
Enter Export Password:                   <---PKCS12にパスワードを付与
Verifying - Enter Export Password:       <---もう一度
C:\OpenSSL\bin>dir eigy-taro.p12
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 54A5-8EF0 です

 C:\OpenSSL\bin のディレクトリ

2006/04/15  11:29             1,821 eigy-taro.p12
               1 個のファイル               1,821 バイト
               0 個のディレクトリ   6,706,122,752 バイトの空き領域

クライアント証明書(PKCS12)をブラウザにインポート

インターネットエクスプローラで、「ツール > インターネットオプション」 を選択。
「コンテンツ > 証明書」 を選択。
「個人 > インポート」 を選択。
「次へ」 をクリック。
「参照」 を選択し、証明書の場所を指定し、「次へ」 をクリック。
PKCS12形式に変換した際に入力したパスワードを入力する。そして「次へ」 をクリック。
「個人」 を選択し、「次へ」 をクリック。
「完了」 をクリック。
「OK」 をクリック。

以下のように追加されます。

Apacheでクライアント認証の設定

サーバの/etc/httpd/conf.d/ssl.confに以下の設定を行います。

SSLVerifyClient require・・・クライアント認証を要求するようになります。
SSLCACertificateFile・・・クライアント証明書に署名したCAの証明書です。サーバはこのCA局を信用することになります。SSLCACertificateFileでしているCA証明書は、FTPなどの何らかの方法でサーバにコピーしておく必要があります。
これらの設定を
<VirtualHost _default_:443>と</VirtualHost>との間に記述することで、すべてのSSL接続でこの設定が有効になるのだと思います。
<VirtualHost _default_:443>
SSLVerifyClient require <---このようにコメント(#)をはずします。
SSLCACertificateFile /etc/httpd/conf/ssl.crt/cacert.pem <---CA証明書を指定
</VirtualHost>
Apacheを再起動します。
[root@linux1 root]# service httpd restart
httpdを停止中:                                             [  OK  ]
httpdを起動中: Apache/2.0.40 mod_ssl/2.0.40 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.

Server new.host.name:443 (RSA)
Enter pass phrase:                  <---サーバ秘密鍵のパスフレーズを入力
Ok: Pass Phrase Dialog successful.
                                                           [  OK  ]

クライアントからアクセスしてみる

クライアントのブラウザ(インターネットエクスプローラ)でhttps://www.internet_company.com/でアクセスしてみましょう。

アクセスすると、サーバからクライアント認証要求が飛んで来るのでブラウザでは、「デジタル証明書の選択」画面が表示されます。(ブラウザの種類によって勝手に適切な証明書を選択するものもあったと思います。)

eigyo-taroの証明書を選択し、「OK」 をクリックします。
以下のように正しくコンテンツが表示されました。

以上です

以上で、Windows版OpenSSLの使い方の説明は終了です。

おすすめ