目次
認証局に対して署名を要求するもので認証局が認証しましたと証明書の中に記録するものになります。
認証局にはパブリック認証局とプライベート認証局があります。
パブリック認証局は有料と無料でSSL証明書を発行してくれるところがあります。
SSL証明書を発行してくれるパブリックの認証局であれば事前にCA証明書がブラウザにインストールされているため、ブラウザ等でエラー表示はされません。
プライベート認証局はグローバルIPアドレスではない場所に設置して運用するものです。
プライベート認証局を使用しない方法でSSL証明書の作成はできますが認証局を通していないことでブラウザ等でエラー表示されます。
プライベート認証局で認証してもプライベート認証局のCA証明書をクライアントにインストールしないとブラウザ等でエラー表示されます。
通信の暗号化をするために公開鍵暗号方式と共通鍵暗号方式を採用しています。
SSL証明書には3種類の認証方法があります。
- ドメイン認証(Domain Validation)
- 企業認証(Organization Validation)
- 拡張認証(Extended Validation)
ドメイン認証(DV)とはドメイン管理権限を確認することで発行されるSSL証明書です。
属性に組織情報は設定されません。
企業認証(OV)とは組織情報の審査後、発行されるSSL証明書です。
属性に組織情報が設定されます。
拡張認証(EV)とは企業認証より厳格に審査後に発行される証明書です。
属性に組織情報が設定され、アドレスバーが緑色になります。
それぞれ証明書発行機関により要求される公的証明書があります。
ドメイン認証の場合は、ドメインを所有していれば発行されるため、簡単に発行されます。誰でも入手可能。
企業SSLサイトを構築する場合、EVを選択することが多いです。
その理由は、多くのブラウザでアドレスバーが緑色になったり、鍵マークが緑色になったりします。
主にWebサーバが一般的に認知されています。無線LANクライアント認証そのほか送信メールサーバ 受信メールサーバ FTPサーバなどがあります。
.key 秘密鍵
.csr 証明書署名要求 証明書発行依頼するときに使用します。
.cer 証明書
.crt 証明書
.pem 証明書(エンコード形式)
.der 証明書(エンコード形式)
.p12 証明書 CA 秘密鍵が1つにまとめられたファイル Windowsなどで使用
組み込み系の機器で必要になる ハンディーターミナルなどで使用
.pvk 秘密鍵(パスワードあり、パスワード無しの選択ができます)
.spc 証明書
証明書インストール後にハンディーターミナル再起動するログオンユーザ名を聞いてくるので証明書のユーザ名のみ入力する。
.p12形式で提供されることが多いため、opensslコマンドで分離できるようにしておくと今後の作業がしやすくなります。
ハンディーターミナルなどはp12から分離した.pvk .spcを使用します。
1.秘密鍵の作成
2.CSR(Certificate Signing Request)の作成
3.CER CRT(Certificate)の受け取り
4.Webサーバに証明書を適用(apacheのリロード)
5.期限切れになる前に更新手続き
6.失効手続き
秘密鍵の作成はLinuxサーバで作成することができます。
opensslコマンドで発行
パスワードを付けるとapacheのプロセス再起動などの時パスワード要求されます。
作成したserver.keyは厳重に管理してください。
万が一server.keyが外部に漏れた場合は、秘密鍵から作成し直ししてください。
証明書発行機関で署名したSSL証明書を発行してもらうため、CSRを送付します。
拡張認証でCSRを作成する時、登記上の名前を使用する必要があります。
コモンネーム (Common Name)
組織名 (Organization)
部門名 (Organizational Unit)
市区町村 (Locality)
都道府県 (State or Province)
国 (Country)
CSR作成後の証明書の発行については各証明書発行機関にしたがって発行していただきます。
opensslで証明書署名要求ファイルを作成するには
openssl reqコマンドで発行することになります。秘密鍵の指定、pkcs#10出力ファイルの指定
openssl req -new -nodes -key server.key -out server.csr -addext 'subjectAltName = DNS:[FQDN],DNS:[FQDN1],IP:[IP Address],IP:[IP Address1]' -addext 'extendedKeyUsage = serverAuth' -addext 'keyUsage = critical,digitalSignature,keyEncipherment' -subj "/C=[国]/ST=[都道府県]/L=[市区町村]/O=[サーバ名]/CN=[FQDN]"
証明書発行機関からCER CRTを受け取りします。
メールであったり、郵送の場合もあります。
証明書受け取り後にWebサーバやメールサーバに適用します。
linux apacheの場合
ssl.confに秘密鍵,中間証明書,証明書を記載する。
記載後、apacheをリロードする。
このとき秘密鍵にパスワードを付けていた場合はリロード等でパスワード要求されます。
外部Webサイトなどではパスワード無しで作成することが多いです。
更新時期になったとき証明書発行機関に更新手続きを行います。
更新手続き時に必要になるCSRと秘密鍵server.keyは作り直しする方がよいです。
2の手順から繰り返すことになります。
秘密鍵、CSRなどが外部に漏れたとき失効手続きを行うことで外部に漏れた情報を失効すること
ができます。
CRL(Certificate Revocation List)証明書失効リストはCA局が管理します。
基本的なファイル作成、ファイル変換および内容確認ができます。
- 秘密鍵の作成
- crtファイルの作成
- 1コマンドで秘密鍵とcrtファイルを作成する
- crtファイルからderファイルに変換する方法
- derファイルからcerファイルに変換する方法
- p12ファイルの作成
- p12ファイルから秘密鍵を取り出す
- Windows CE用SPC,PVKファイルに変換する方法
- p12で使用するパスワードについて
- 証明書の内容確認
openssl genrsa 2048 > server.key
openssl req -new -key server.key -nodes -x509 -out server.crt -days 3653
Apache等 SSLを使用するものは.crtファイルがあれば対応が可能です。
参考
openssl req -newkey rsa:2048 -nodes -x509 -out server2.crt -keyout server2.key -days 3653
.derファイルに変換するには
openssl x509 -in server.crt -outform DER -out server.der
.crtファイルに変換するには
openssl x509 -inform DER -in server.der -out server1.crt
p12ファイルを作成するには
p12ファイルにはCA証明書(任意)、ユーザ証明書、秘密鍵が含まれています。
openssl pkcs12 -export -inkey server.key -in server.crt -out server.p12
openssl pkcs12 -export -inkey server.key -in server.crt -certfile rootca.crt -out server.p12
openssl pkcs12 -in server.p12 -cacerts -nokeys -out root.pem
openssl pkcs12 -in server.p12 -clcerts -nokeys -out server.pem
openssl pkcs12 -in server.p12 -nocerts -nodes -out serverout.key
openssl pkcs12 -in server.p12 -nokeys -out server2.pem
p12ファイルからpemファイルに変換
p12に含まれている全ての証明書、秘密鍵を変換できます。
openssl pkcs12 -in server.p12 -out server1.pem
openssl pkcs12 -in server.p12 -nodes -out server2.pem
openssl rsa -in serverout.key -out server.key.rsa
openssl pkey -in server.key.rsa -out server1.key
Windows CE用SPC,PVKファイルに変換する方法
ハンディーターミナルなどの組み込みデバイス系の場合、p12ファイルでは証明書のインストールができません。RSA秘密鍵からpvkファイルに変換およびpemファイルからspcファイルに変換することで証明書のインストールができます。
openssl rsa -in server.key.rsa -outform PVK -pvk-strong -out server.key.pvk
RSA秘密鍵の変換をしていなくても作成可能です。
openssl rsa -in serverout.key -outform PVK -pvk-strong -out server.key.pvk
openssl rsa -in server.key.rsa -outform PVK -pvk-none -out server.key.pvk
RSA秘密鍵の変換をしていなくても作成可能です。
openssl rsa -in serverout.key -outform PVK -pvk-none -out server.key.pvk
openssl crl2pkcs7 -nocrl -certfile server2.pem -outform DER -out server.spc
openssl pkey -outform der -in serverout.key -out serverout.key.der
openssl pkey -inform der -in serverout.key.der -out serverout.key
openssl rsa -inform der -in serverout.key.der -out serverout.key.rsa
openssl pkey -text -noout -inform der -in serverout.key.der
openssl pkey -text -noout -inform pem -in serverout.key
diff -uNr server.key server.key.rea
差分がないことを確認する。
p12のパスワードについて
上記コマンドでパスワードを知っていれば秘密鍵を取り出すことができます。p12ファイルのパスワードは推測されにくいものを利用してください。
秘密鍵を取り出せるということは、別の証明書を作成することもできてしまいます。
証明書の内容確認
openssl x509 -text -noout -in server.crt
openssl x509 -text -noout -in user.pem
openssl x509 -inform DER -text -noout -in server.der
openssl rsa -inform PVK -text -noout -in server.key.pvk
openssl pkcs7 -inform DER -print_certs -text -noout -in server.spc
openssl pkcs12 -in server.p12 -nodes -passin pass:[password] | openssl x509 -text -noout
一般的に使用するSSL証明書関連のコマンドをまとめました。参考にしていただけると良いです。