OpenSSL を使用して SSL 証明書を作成、管理、変換する
SSL 証明書を作成、変換、管理するための SSL で最も一般的なコマンドの 1 つは、OpenSSL です。
さまざまな方法で OpenSSL に対処しなければならない状況が数多くあります。ここでは、便利なチート シートとしてそれらをリストしました。
この記事では、現実の世界で役立つ、頻繁に使用される OpenSSL コマンドについて説明します。
証明書に関連する略語の一部。
- SSL – セキュア ソケット レイヤー
- CSR – 証明書署名要求
- TLS – トランスポート層セキュリティ
- PEM – プライバシー強化メール
- DER – 識別符号化規則
- SHA – セキュア ハッシュ アルゴリズム
- PKCS – 公開鍵暗号化標準
ノート: SSL/TLS運用コース 用語に慣れていない場合に役立ちます。
新しい秘密鍵と証明書署名要求を作成する
openssl req -out etechjp.com.csr -newkey rsa:2048 -nodes -keyout etechjp.com.key
上記のコマンドは、CSR と 2048 ビットの RSA キー ファイルを生成します。 この証明書を Apache または Nginx で使用する場合は、この CSR ファイルを証明書発行機関に送信する必要があります。証明書発行機関は、Apache または Nginx Web サーバーで構成する必要がある、ほとんどが der または pem 形式の署名付き証明書を提供します。 .
自己署名証明書を作成する
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 etechjp.com.csr
必要な詳細とともに CSR を発行者当局に送信していることを確認するには、検証が不可欠です。
RSA 秘密鍵の作成
openssl genrsa -out private.key 2048
RSA 秘密鍵を生成するだけの場合は、上記のコマンドを使用できます。 より強力な暗号化のために 2048 を含めました。
キーからパスフレーズを削除
openssl rsa -in certkey.key -out nopassphrase.key
キー ファイルでパスフレーズを使用し、Apache を使用している場合は、起動するたびにパスワードを入力する必要があります。 パスワードの入力に煩わしい場合は、上記の openssl rsa -in etechjp.com.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
通常、認証局は SSL 証明書を .der 形式で提供します。それらを 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 は、証明書の有効期限が切れているか、まだ有効であるかを確認するために検証する必要があるものです。
元:
[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [[email protected] opt]#
SSL URL の証明書の有効期限を確認する
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
SSL 証明書の有効期限をリモートまたは特定の URL で監視することを計画している場合に、もう 1 つの便利な方法です。
元:
[[email protected] 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」、そうでない場合は「handshake failure」が表示されます。
特定の暗号が URL で受け入れられるかどうかを確認する
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
セキュリティの調査結果に取り組んでいて、侵入テストの結果が弱い暗号の一部が受け入れられていることを示している場合は、検証するために、上記のコマンドを使用できます。
もちろん、テストする暗号と URL を変更する必要があります。 上記の暗号が受け入れられた場合、「CONNECTED」または「handshake failure」が表示されます。
上記のコマンドが、Web サイトの SSL 証明書を管理するための OpenSSL について詳しく知るのに役立つことを願っています。