SSL(Secure Sockets Layer)証明書のコマンド一覧

サーバを確認するコンソール画面です

目次

SSL証明書を発行する認証局について

認証局に対して署名を要求するもので認証局が認証しましたと証明書の中に記録するものになります。
認証局にはパブリック認証局とプライベート認証局があります。
パブリック認証局は有料と無料でSSL証明書を発行してくれるところがあります。
SSL証明書を発行してくれるパブリックの認証局であれば事前にCA証明書がブラウザにインストールされているため、ブラウザ等でエラー表示はされません。
プライベート認証局はグローバルIPアドレスではない場所に設置して運用するものです。
プライベート認証局を使用しない方法でSSL証明書の作成はできますが認証局を通していないことでブラウザ等でエラー表示されます。
プライベート認証局で認証してもプライベート認証局のCA証明書をクライアントにインストールしないとブラウザ等でエラー表示されます。

通信の暗号化をするために公開鍵暗号方式と共通鍵暗号方式を採用しています。

SSL証明書には3種類の認証方法があります。

  • ドメイン認証(Domain Validation)
  • 企業認証(Organization Validation)
  • 拡張認証(Extended Validation)

ドメイン認証(DV)とはドメイン管理権限を確認することで発行されるSSL証明書です。
属性に組織情報は設定されません。

企業認証(OV)とは組織情報の審査後、発行されるSSL証明書です。
属性に組織情報が設定されます。

拡張認証(EV)とは企業認証より厳格に審査後に発行される証明書です。
属性に組織情報が設定され、アドレスバーが緑色になります。

それぞれ証明書発行機関により要求される公的証明書があります。
ドメイン認証の場合は、ドメインを所有していれば発行されるため、簡単に発行されます。誰でも入手可能。

企業SSLサイトを構築する場合、EVを選択することが多いです。
その理由は、多くのブラウザでアドレスバーが緑色になったり、鍵マークが緑色になったりします。

SSL証明書の適用範囲

主に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が外部に漏れた場合は、秘密鍵から作成し直ししてください。

CSR(Certificate Signing Request)の作成

証明書発行機関で署名した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(Certificate)の受け取り

証明書発行機関からCER CRTを受け取りします。
メールであったり、郵送の場合もあります。

Webサーバに証明書を適用(apacheのリロード)

証明書受け取り後に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で使用するパスワードについて
  • 証明書の内容確認

証明書作成のもとになる鍵ファイル(PRIVATE KEY)の作成

openssl genrsa 2048 > server.key

10年間有効になる自己証明書(crt)を作成する

openssl req -new -key server.key -nodes -x509 -out server.crt -days 3653

Apache等 SSLを使用するものは.crtファイルがあれば対応が可能です。

参考

1コマンドで秘密鍵と自己証明書を作成する。

openssl req -newkey rsa:2048 -nodes -x509 -out server2.crt -keyout server2.key -days 3653

.derファイルに変換するには

crtファイルからderファイルに変換する方法

openssl x509 -in server.crt -outform DER -out server.der

.crtファイルに変換するには

derファイルからcrtファイルに変換する方法

openssl x509 -inform DER -in server.der -out server1.crt

p12ファイルを作成するには
p12ファイルにはCA証明書(任意)、ユーザ証明書、秘密鍵が含まれています。

p12ファイルの作成方法

openssl pkcs12 -export -inkey server.key -in server.crt -out server.p12

CA証明書を含める場合

openssl pkcs12 -export -inkey server.key -in server.crt -certfile rootca.crt -out server.p12

p12ファイルからCA証明書ファイルの取り出し

openssl pkcs12 -in server.p12 -cacerts -nokeys -out root.pem

p12ファイルからユーザ証明書ファイルの取り出し

openssl pkcs12 -in server.p12 -clcerts -nokeys -out server.pem

p12ファイルから秘密鍵の取り出し

openssl pkcs12 -in server.p12 -nocerts -nodes -out serverout.key

p12ファイルからCA証明書,ユーザ証明書ファイルの取り出し

openssl pkcs12 -in server.p12 -nokeys -out server2.pem

p12ファイルからpemファイルに変換
p12に含まれている全ての証明書、秘密鍵を変換できます。

p12ファイルから秘密鍵を暗号化したままpemファイルに変換する

openssl pkcs12 -in server.p12 -out server1.pem

p12ファイルから秘密鍵を暗号化しないでpemファイルに変換する

openssl pkcs12 -in server.p12 -nodes -out server2.pem

取り出した秘密鍵をRSA秘密鍵に変換

openssl rsa -in serverout.key -out server.key.rsa

変換したRSA秘密鍵を元の秘密鍵に変換

openssl pkey -in server.key.rsa -out server1.key

Windows CE用SPC,PVKファイルに変換する方法
ハンディーターミナルなどの組み込みデバイス系の場合、p12ファイルでは証明書のインストールができません。RSA秘密鍵からpvkファイルに変換およびpemファイルからspcファイルに変換することで証明書のインストールができます。

RSA秘密鍵からpvkファイルに変換

openssl rsa -in server.key.rsa -outform PVK -pvk-strong -out server.key.pvk

RSA秘密鍵の変換をしていなくても作成可能です。

秘密鍵からpvkファイルに変換

openssl rsa -in serverout.key -outform PVK -pvk-strong -out server.key.pvk

RSA秘密鍵からpvkファイルに変換(パスワード無し)

openssl rsa -in server.key.rsa -outform PVK -pvk-none -out server.key.pvk

RSA秘密鍵の変換をしていなくても作成可能です。

秘密鍵からpvkファイルに変換(パスワード無し)

openssl rsa -in serverout.key -outform PVK -pvk-none -out server.key.pvk

pemファイルからspcファイルに変換

openssl crl2pkcs7 -nocrl -certfile server2.pem -outform DER -out server.spc

秘密鍵(PEM,RSA)をDER形式に変換

openssl pkey -outform der -in serverout.key -out serverout.key.der

DER形式秘密鍵を秘密鍵に変換

openssl pkey -inform der -in serverout.key.der -out serverout.key

DER形式秘密鍵をRSA秘密鍵に変換

openssl rsa -inform der -in serverout.key.der -out serverout.key.rsa

DER形式秘密鍵の詳細を表示

openssl pkey -text -noout -inform der -in serverout.key.der

PEM形式秘密鍵の詳細を表示

openssl pkey -text -noout -inform pem -in serverout.key

p12ファイルから取り出した秘密鍵と一番最初に作成した秘密鍵を比較する

diff -uNr server.key server.key.rea

差分がないことを確認する。

p12のパスワードについて
上記コマンドでパスワードを知っていれば秘密鍵を取り出すことができます。p12ファイルのパスワードは推測されにくいものを利用してください。
秘密鍵を取り出せるということは、別の証明書を作成することもできてしまいます。

証明書の内容確認

作成されたcrtファイルの内容確認

openssl x509 -text -noout -in server.crt

pemファイルの内容確認

openssl x509 -text -noout -in user.pem

derファイルの内容確認

openssl x509 -inform DER -text -noout -in server.der

pvkファイルの内容確

openssl rsa -inform PVK -text -noout -in server.key.pvk

spcファイルの内容確認

openssl pkcs7 -inform DER -print_certs -text -noout -in server.spc

p12,pfxファイルの内容確認

openssl pkcs12 -in server.p12 -nodes -passin pass:[password] | openssl x509 -text -noout

最後に

一般的に使用するSSL証明書関連のコマンドをまとめました。参考にしていただけると良いです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA