OpenSSL を使用した SSL 証明書の作成、管理、変換
SSL 証明書 を作成 、 変換 、 管理する ための SSL で最も一般的なコマンドの 1 つは OpenSSL です。
さまざまな方法で OpenSSL に対処しなければならない状況がたくさんあります。ここでは、それらを便利なチートシートとしてリストしました。
この記事では、実際の世界で役立つ、頻繁に使用される OpenSSL コマンドについて説明します。
証明書に関連する略語の一部。
- SSL – セキュアソケットレイヤー
- CSR – 証明書署名リクエスト
- TLS – トランスポート層セキュリティ
- PEM – プライバシー強化メール
- DER – 区別されたエンコーディング ルール
- SHA – 安全なハッシュ アルゴリズム
- PKCS – 公開鍵暗号化標準
注 : 用語に詳しくない場合は、 SSL/TLS 操作コース が役立ちます。
新しい秘密キーと証明書署名リクエストを作成する
openssl req -out .csr -newkey rsa:2048 -nodes -keyout .key
上記のコマンドは、CSR と 2048 ビット RSA キー ファイルを生成します。この証明書を Apache または Nginx で使用する場合は、この CSR ファイルを証明書発行局に送信する必要があります。発行局は、ほとんどが
der
または
pem
形式で署名された証明書を提供します。これを Apache または Nginx Web サーバーで構成する必要があります。 。
自己署名証明書を作成する
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
上記のコマンドは、2048 ビット RSA を使用して自己署名証明書とキー ファイルを生成します。現時点で最も安全であると考えられている sha256 も含めました。
ヒント: デフォルトでは、1 か月間のみ有効な自己署名証明書が生成されるため、有効期間を延長するために –days パラメーターを定義することを検討してください。
例: 2 年間有効な自己署名を付ける。
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
CSRファイルを検証する
openssl req -noout -text -in .csr
必要な詳細情報を含む CSR を発行者当局に送信していることを確認するには、検証が不可欠です。
RSA秘密キーの作成
openssl genrsa -out private.key 2048
RSA 秘密キーを生成するだけの場合は、上記のコマンドを使用できます。暗号化を強化するために 2048 を含めました。
キーからパスフレーズを削除
openssl rsa -in certkey.key -out nopassphrase.key
キー ファイルにパスフレーズを使用し、Apache を使用している場合は、起動するたびにパスワードを入力する必要があります。パスワードを入力するのが面倒な場合は、上記の openssl rsa -in .key -check を使用して、既存のキーからパスフレーズ キーを削除できます。
秘密キーの検証
openssl rsa -in certkey.key –check
キー ファイルに疑問がある場合は、上記のコマンドを使用して確認できます。
証明書ファイルの検証
openssl x509 -in certfile.pem -text –noout
CN、OU などの証明書データを検証したい場合は、証明書の詳細を取得する上記のコマンドを使用できます。
証明書署名者の認証局を確認する
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
証明書発行機関はすべての証明書に署名し、必要に応じて証明書を確認します。
証明書のハッシュ値を確認する
openssl x509 -noout -hash -in bestflare.pem
DERをPEM形式に変換する
openssl x509 –inform der –in sslcert.der –out sslcert.pem
通常、認証局は .der 形式で SSL 証明書を提供しますが、Apache または .pem 形式で使用する必要がある場合は、上記のコマンドが役に立ちます。
PEM を DER 形式に変換する
openssl x509 –outform der –in sslcert.pem –out sslcert.der
.pem 形式を .der に変更する必要がある場合
証明書と秘密キーを PKCS#12 形式に変換する
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Java アプリケーションまたは PKCS#12 形式のみを受け入れるその他のアプリケーションで証明書を使用する必要がある場合は、上記のコマンドを使用できます。これにより、証明書とキー ファイルを含む単一の pfx が生成されます。
ヒント: 以下のように –chain を渡すことでチェーン証明書を含めることもできます。
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
既存の秘密キーを使用して CSR を作成する
openssl req –out certificate.csr –key existing.key –new
既存の秘密キーを使用する代わりに新しい秘密キーを作成したくない場合は、上記のコマンドを使用できます。
PKCS12形式の証明書の内容を確認する
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 はバイナリ形式であるため、メモ帳や他のエディタでコンテンツを表示することはできません。上記のコマンドは、PKCS12 ファイルの内容を確認するのに役立ちます。
PKCS12 形式を PEM 証明書に変換します
openssl pkcs12 –in cert.p12 –out cert.pem
既存の pkcs12 形式を Apache で使用する場合、または pem 形式のみで使用する場合、これは便利です。
特定の URL の SSL 証明書をテストする
openssl s_client -connect yoururl.com:443 –showcerts
私はこれをサーバーからの特定の URL の SSL 証明書を検証するために頻繁に使用します。これは、プロトコル、暗号、証明書の詳細を検証するのに非常に便利です。
OpenSSLのバージョンを調べる
openssl version
OpenSSL が安全であることを保証する責任がある場合、おそらく最初に行うべきことの 1 つは、バージョンを確認することです。
PEM ファイル証明書の有効期限を確認する
openssl x509 -noout -in certificate.pem -dates
有効性をチェックするために何らかのモニタリングを導入する予定がある場合に役立ちます。 notBefore および notAfter 構文で日付が表示されます。 notAfter は、証明書の有効期限が切れているか、まだ有効であるかを確認するために検証する必要があるものです。
元:
[root@Chandan opt]# openssl x509 -noout -in bestflare.pem -dates
notBefore =Jul 4 14:02:45 2015 GMT
notAfter =Aug 4 09:46:42 2015 GMT
[root@Chandan opt]#
SSL URLの証明書の有効期限を確認する
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
もう 1 つは、SSL 証明書の有効期限をリモートまたは特定の URL で監視することを計画している場合に役立ちます。
元:
[root@Chandan opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate
notAfter =Dec 8 00:00:00 2015 GMT
URL で SSL V2 または V3 が受け入れられるかどうかを確認する
SSL V2を確認するには
openssl s_client -connect secureurl.com:443 -ssl2
SSL V3を確認するには
openssl s_client -connect secureurl.com:443 –ssl3
TLS 1.0を確認するには
openssl s_client -connect secureurl.com:443 –tls1
TLS 1.1を確認するには
openssl s_client -connect secureurl.com:443 –tls1_1
TLS 1.2を確認するには
openssl s_client -connect secureurl.com:443 –tls1_2
Web サーバーを保護しており、SSL V2/V3 が有効かどうかを検証する必要がある場合は、上記のコマンドを使用できます。アクティブ化すると、「 CONNECTED 」が表示され、それ以外の場合は「 ハンドシェイク失敗 」が表示されます。
特定の暗号が URL で受け入れられるかどうかを確認する
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
セキュリティの調査結果に取り組んでおり、侵入テストの結果で弱い暗号の一部が受け入れられたことが示された場合は、検証するために上記のコマンドを使用できます。
もちろん、テストする暗号と URL を変更する必要があります。前述の暗号が受け入れられると、「 CONNECTED 」が表示され、それ以外の場合は「 ハンドシェイク失敗 」が表示されます。
上記のコマンドが、Web サイトの SSL 証明書を管理するための OpenSSL についてさらに理解するのに役立つことを願っています。