共通
秘密鍵の作成
パスフレーズは必須になっている。
例の場合は鍵長を 2048bit に指定しているが、一部携帯電話で通信できない可能性がある。
openssl genrsa -des3 2048 > server_pem.key.org
パスフレーズの解除
起動時にパスフレーズを求められないようにする。
ここは必ずしもやる必要はない。
openssl rsa -in server_pem.key.org -out server_pem.key
証明書署名要求 (CSR) の作成
ここで作ったものを証明機関へ提出し証明書と、もしあれば証明書チェーンをもらう。
指定内容には日本語を指定しない方が無難。
openssl req -new -key server_pem.key -out server_pem.csr
ccTLD を指定する。日本なので JP。
ちなみに GB は United Kingdom of Great Britain and Northern Ireland です。つまりイギリス。
Country Name (2 letter code) [GB]:JP
県名
State or Province Name (full name) [Berkshire]:Osaka
市区町村
Locality Name (eg, city) [Newbury]:Osaka
組織名
Organization Name (eg, company) [My Company Ltd]:Upken
部署名
Organizational Unit Name (eg, section) []:System
証明したいホストを FQDN で指定する。
*.upken.jp のようにワイルドカードで指定すると、www1.upken.jp, www2.upken.jp のように複数のサーバーで共用できる。
Common Name (eg, your name or your server's hostname) []:hostfqdn.upken.jp
それ以降は何も入れない
Email Address []:
A challenge password []:
An optional company name []:
俺様証明書を作成する場合
検証用やローカル ネットワークで使用します。
Webには公開しないでください。
自己認証局の作成
CentOS の場合は以下から実行する。
デフォルトでは各ディレクトリの指定が相対参照になっているため実行ファイルのディレクトリに移ってから実行する。
cd /etc/pki/tls/misc
./CA -newca
証明書で使用されるのは以下の2つ。cacert.pem は公開してよい。
/etc/pki/CA/cacert.pem
/etc/pki/CA/private/cakey.pem
自己証明書の作成
CentOS の場合は以下の方法で実行する。
cacert.pem, server_pem.crt, server_pem.key を実際のサーバーで使用する。
cd /etc/pki/tls/misc
openssl ca -config ../openssl.cnf -in server_pem.csr -out server_pem.crt
Windows の証明機関から貰ってくる場合
証明機関の構築
Windows Server 2008 以降は、証明機関を構築するのに Active Directory が必須になっている。
Active Directory ドメイン サービス
DNS サーバー
そのうえで、以下の役割を追加する。
Active Directory 証明書サービス
Web サーバー
構築しただけでは Windows 以外からの証明書要求を受け付けないので追加で以下の設定を施す。
- [管理ツール] - [インターネット インフォメーション サービス (IIS) マネージャー]
- (ホスト名) - [サーバー証明書] を開き、ホストの FQDN のある証明書があることを確認する
もし無い場合は、右ペインの [ドメイン証明書の作成] から証明書を取得する
- (ホスト名)/サイト/Default Web Site - 右ペインの [バインド]
- https を追加する
追加する際に、FQDN の証明書を指定する
証明書の取得
- https://hostname.domain.tld/certsrv/
管理者権限でログインする
- [CA 証明書、証明書チェーン、または CRL のダウンロード]
- DER で [CA 証明書のダウンロード] cacert_der.cer が取得できる。
- ホームに戻り、[証明書を要求する] - [証明書の要求の詳細設定] - [Base 64 エンコード CMC または PKCS #10 ファイルを使用して証明書の要求を送信するか、または Base 64 エンコード PKCS #7 ファイルを使用して更新の要求を送信する。]
- server_pem.csr をテキストで開き、コピー & ペースト - 証明書テンプレートは [Web サーバー] - [送信]
- DER エンコードで証明書と証明書チェーンをダウンロードする
file_der.cer と file_der.p7b が取得できる。
取得した証明書を変換
cacert_pem.crt, server_pem.crt, chain_pem.crl, server_pem.key を実際のサーバーで使用する。
コマンドはエラー以外表示されない。
openssl x509 -inform der -in cacert_der.cer -outform pem -out cacert_pem.crt
openssl x509 -inform der -in file_der.cer -outform pem -out server_pem.crt
openssl pkcs7 -inform der -in file_der.p7b -outform pem -out chain_pem.crl