SSTPの証明書にOpenSSLを使う (1) ルートCAの作成

| コメント(0) | トラックバック(0) |

以前に、Windows Server 2008でVPNを構築する記事を書きました。SSTPと呼ばれる方式で通信するのですが、SSLを使用しているため証明書が必要でした。その証明書の発行に、ActiveDirectory 証明書サービスを利用しました。この方法では、不要なIISもインストールしなければならなく、余計なサービスが動作してしまいます(Enterprise以上ならIISは不要で可能)。今回は別の方法で、証明書さえ発行できればいいので、LinuxとOpenSSLで作ったCAを使用して、証明書を発行してみることにします。結果から言うと、こっちの方が簡単でした。

手順は以下の通り。環境は、CentOS 5.4 x86_64・OpenSSL 0.9.8・Windows Server 2008です。

  1. OpenSSLでルートCAを作成する。
  2. ADのグループポリシーにルートCAの証明書を追加する。
  3. 作成したルートCAで、リクエストを作成し、署名する。
  4. Windows Server 2008の証明書ストアに展開する。
  5. SSTPを構築する。

では、順を追って説明します。今回は、1.を説明します。ちなみに、OpenSSLでCA作成なので、Apache SSL・FTPSの証明書用にも利用できます。

※この作業には、CentOS 5.4が必要です。その他のディストリビューション・バージョンでも可能ですが、作業するディレクトリが異なる可能性があります。CentOS 5.4では、/etc/pki が関連ファイルのディレクトリでした。

あらかじめルートCAの証明書と秘密鍵の保管ディレクトリのパスを決めておきます。ここでは、/etc/pki/PublicCA とします。

CAの作成スクリプトがあるので、それをコピーします。CentOS 5.4では、/etc/pki/tls/misc/CA です。(コピーせずにそのまま利用することもできます。今後、複数のルートCAを作成したい場合は、コピーしてください。)

# cp /etc/pki/tls/misc/CA /etc/pki/PublicCA.sh

ここでは、/etc/pki/PublicCA.sh にコピーしました。

OpenSSLの設定ファイルもコピーしておきます。CentOS 5.4では、/etc/pki/tls/openssl.cnf です。(先ほど同様にコピーしなくても利用できます。複数のルートCAを作成する場合でもコピーする必然性はありませんが、デフォルト値が設定できるので、コピーする方が良いです。)

# cp /etc/pki/tls/openssl.cnf /etc/pki/tls/openssl-public.cnf

ここでは、/etc/pki/tls/openssl-public.cnf にコピーしました。

設定ファイルを編集します。変更箇所のみ記載します。

# vi /etc/pki/tls/openssl-public.cnf
[ CA_default ]
dir = ../../CA
↓ ルートCAの証明書の保管ディレクトリのパス
dir = /etc/pki/PublicCA

※以下デフォルト指定(省略可能)
[ req_distinguished_name ]
countryName_default = GB
↓ 国名
countryName_default = JP

stateOrProvinceName_default = Berkshire
↓都道府県名
stateOrProvinceName_default = Shiga

localityName_default = Newbury
↓市町村名
localityName_default = Yasu

0.orgnizationName_default = My Company Ltd
↓団体名
0.orginzationName_default = Let\'s Try It!

以上で、設定ファイルを保存しておきます。

ルートCA作成スクリプトを編集します。CentOS 5.4についていた物は、少し不具合(勘違いかもしれませんが)あったので直しておきます。

# vi /etc/pki/PublicCA.sh
↓DAYS="-days 365"の上に追加 設定ファイルパスにする
SSLEAY_CONFIG="-config /etc/pki/tls/openssl-public.cnf"

CATOP=../../CA
↓ルートCAの証明書の保管ディレクトリのパス
CATOP=/etc/pki/PublicCA

※92行目 不具合修正
$CA -out ${CATOP}/$CACERT $CADAYS -batch \
↓ -extentions=v3_caを追加(これをしないと作成した証明書がCAとして動作しない)
$CA -out ${CATOP}/$CACERT $CADAYS -extentions=v3_ca -batch \

編集を終了して保存しておきます。

ルートCAの証明書を作成します。作成したスクリプトを利用して行います。ちなみにここでは、説明していませんがCADAYSを3650にしています。

# /etc/pki/PublicCA.sh -newca
CA certificate filename (or enter to create)
← Enterキーで応答
Making CA certificate ...
Generating a 1024 bit RSA private key
........................................................................++++++
...++++++
writing new private key to '/etc/pki/PublicCA/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) [JP]: ←デフォルト設定でEnterキーで応答
State or Province Name (full name) [Shiga]: ←デフォルト設定でEnterキーで応答
Locality Name (eg, city) [Yasu]: ←デフォルト設定でEnterキーで応答
Organization Name (eg, company) [Let's Try It!]: ←デフォルト設定でEnterキーで応答
Organizational Unit Name (eg, section) []:Let's Try It! Public CA ←部門を入力
Common Name (eg, your name or your server's hostname) []:Let's Try It! Public CA ←基本はホストのFQDN、CAは名前の方が良いかも?
Email Address []:[email protected] ←電子メールアドレス

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ←デフォルト設定でEnterキーで応答
An optional company name []: ←デフォルト設定でEnterキーで応答
Using configuration from /etc/pki/tls/openssl-public.cnf
Enter pass phrase for /etc/pki/PublicCA/private/./cakey.pem: ←秘密鍵のパスフレーズを入力
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 0 (0x0)
        Validity
            Not Before: Feb  9 10:25:56 2010 GMT
            Not After : Feb  7 10:25:56 2020 GMT
        Subject:
            countryName               = JP
            stateOrProvinceName       = Shiga
            organizationName          = Let's Try It!
            organizationalUnitName    = Let's Try It! Public CA
            commonName                = Let's Try It! Public CA
            emailAddress              = [email protected]
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                A2:F2:EF:70:29:96:3F:87:FC:7B:E9:65:FD:38:B5:91:39:F5:C8:9C
            X509v3 Authority Key Identifier:
                keyid:A2:F2:EF:70:29:96:3F:87:FC:7B:E9:65:FD:38:B5:91:39:F5:C8:9C
                DirName:/C=JP/ST=Shiga/O=Let's Try It!/OU=Let's Try It! Public CA/CN=Let's Try It! Public CA/[email protected]
                serial:00

            X509v3 Basic Constraints:
                CA:TRUE ←ここにこれが出ていることを確認しておく
Certificate is to be certified until Feb  7 10:25:56 2020 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

これで、ルートCAの作成が完了しました。/etc/pki/PublicCAの中に証明書類が格納されています。

証明書を他のマシンに使えるようにPEM形式からDER形式のファイルにエクスポートしておきます。次回に必要です。

# openssl x509 -inform pem -in /etc/pki/PublicCA/cacert.pem -outform der -out /etc/pki/PublicCA/cacert.der

/etc/pki/PublicCA/cacert.derにエクスポートされます。USBメモリ・FTPなどを使ってコピーしておいてください。

今回はここまで。次回、グループポリシーで証明書の自動展開を設定して、さらにSSTP用の証明書を作成します。

長いな・・

トラックバック(0)

トラックバックURL: https://www.letstryit.net/mt/mt-tb.cgi/154

前回SSTPの証明書にOpenSSLを使う (1) ルートCAの作成 ルートCA証明書を作成したので、それを使ってサーバ証明書を作成したいと思います。前回... 続きを読む

コメントする

アーカイブ

カウンタ

Total
Today
Yesterday

IPv6 Ready

Powered by Movable Type 7.0

このブログ記事について

このページは、enjoypcが2010年2月10日 22:01に書いたブログ記事です。

ひとつ前のブログ記事は「Hyper-V上でLinuxの時刻」です。

次のブログ記事は「SSTPの証明書にOpenSSLを使う (2) 証明書の発行/CA証明書の自動展開」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ