はじめに
インターネットのeコマース機能をサポートするために1994年にNetscapeによって最初に開発された、Secure Socket Layer(SSL)は長い道のりを歩んできました。すべてのサイバー攻撃の中で、SSL証明書はライブWebサイトで定期的に必要になっています。
Secure Socket Layer(SSL)とTransport Socket Layer(TLS)は非常に普及していますが、少し時間を取って、それらの機能と方法について説明します。
OpenSSLチュートリアルをスキップしないでください セクション。
SSL証明書とは何ですか? SSLはどのように機能しますか?
Secure Socket Layer(SSL)証明書は、暗号化を使用して2台のコンピューター間のデータを保護するセキュリティプロトコルです。
通常、SSL証明書は、社会保障番号、クレジットカードの詳細、自宅の住所、パスワードなどのエンドユーザーの機密データを送受信するWebページで使用されます。オンライン支払いフォームは良い例であり、通常、128ビットまたは256ビットのSSLテクノロジーを使用して前述のデリケートな情報を暗号化します。
SSL証明書は、リモートコンピューター(最も一般的にはサーバー)のIDを保証するだけでなく、安全な接続を確立するためにリモートコンピューターに対するコンピューターのIDも確認します。インターネットを安全に保つことは常に双方向であり、SSL暗号化のおかげで、サーバーはパーソナルコンピューターと「握手」し、双方が通信相手を認識します。
TLSとSSLの違いは何ですか?
ありません 。トランスポート層セキュリティ(TLS)は、Secure Socket Layer(SSL)の更新バージョンです。ほとんどの安全な接続はTLSプロトコルを介していますが、人々はそれをSSLと呼び続けています。この場合、古い習慣は一生懸命に死ぬと言っても過言ではありません。
WebページがSSLで保護されているかどうかを確認するにはどうすればよいですか?
インターネットユーザーとして、おそらく南京錠に気づいたでしょう。 およびサイト情報バー https だけでなく、Webブラウザでも緑色に変わります 接続プロトコル。
これは、SSL暗号化を使用してWebサイトが保護されていることを通知するブラウザです。サイト情報バーをクリックすると、接続に関する追加の詳細と、SSL証明書自体に関する洞察が得られます。
SSL証明書が必要なのはなぜですか?
実際の例を見てみましょう。
あなたは、phoenixNAPでサーバーをリースし、いくつかの新しいeコマースストアを立ち上げたばかりのeコマースサイトの所有者です。訪問者がeストアにアクセスするときに安心して、何よりも、ログインして購入することを躊躇しないようにする必要があります。
SSL証明書とHTTPS接続は、消費者の信頼を植え付けます。 eコマース業界は消費者の信頼と密接に関係しており、あなたのビジネスは、購入体験全体を通して顧客が安心できるかどうかにかかっているとさえ言えます。
明らかなセキュリティ上の理由に加えて、SSL証明書はサイトのSEOとGoogleランキングを向上させ、顧客の信頼を構築し、その結果、全体的なコンバージョン率を向上させます。
ドメインのSSL証明書の取得を検討するのに十分でない場合は、Googleが必ず説得します。つまり、2018年7月以降、GoogleはSSLを使用しない各ウェブサイトに安全ではないとフラグを立てます。
SSL証明書はどこで入手できますか?
SSL証明書は、認証局(CA)によって検証および発行されます。サーバー上でSSL証明書を保持するのが理想的なキーペアを使用してCSRを生成することで申請します。 CSRには、CAが検証する重要な組織の詳細が含まれています。
- サーバー上でローカルにCSRとキーのペアを生成します。キーペアは、公開キーと秘密キーで構成されています。
- CSRと公開鍵をCAに送信します。CAは、法人格と、アプリケーションで送信されたドメインを所有および管理しているかどうかを確認します。認証局は組織のチェックを実行し、組織がCSRで提供された場所に登録されているかどうか、およびドメインが存在するかどうかを検証します。
- 確認されると、組織はビジネスの詳細と公開鍵を含むSSL証明書のコピーを受け取ります。これで、組織はサーバーに証明書をインストールできます。
- CAが証明書を発行すると、認証局の「信頼されたルート」証明書にバインドされます。ルート証明書は各ブラウザに埋め込まれ、個別に発行された証明書に接続されてHTTPS接続を確立します。
SSL証明書の種類
必要な証明書タイプをサポートするCAを選択していることを確認してください。便宜上、各証明書タイプの説明を以下に示します。
シングルドメインSSL証明書
このタイプは単一ドメインで使用することを目的としており、サブドメインはサポートされていません。たとえば、証明書をwww.phoenixnap.comで使用する場合、他のドメイン名はサポートされません。
複数ドメイン(SAN / UC証明書)
複数のドメイン証明書は、多数のドメインとサブドメインに使用されます。 FQDNに加えて、サブジェクト代替名フィールドに追加することで、他の(サブ)ドメインのサポートを追加できます。たとえば、SAN証明書には、ドメインwww.phoenixnap.com、そのサブドメインhelp.phoenixnap.com、および別のドメイン(www.examplesite.comなど)を含めることができます。
ワイルドカード証明書
ワイルドカード証明書は、そのすべてのサブドメインを含むドメインに使用できます。主な違いは、特定のFQDNに対して発行されるのではなく、ワイルドカード証明書がさまざまなサブドメインに対して使用されることです。たとえば、*。phoenixnap.comに発行されたワイルドカード証明書は、下の画像に示すように、メインのwww.phoenixnap.comドメインの下にあるさまざまなサブドメインに使用できます。
SSL証明書の検証レベル
CAは、証明書に対する需要の高まりに対応して、証明書の検証レベルを多様化しています。暗号化のためだけにSSLを使用する組織もあれば、信頼できる会社であることを顧客に示したい組織もあります。ニーズが異なれば、証明書の検証レベルも異なります。
ドメイン検証(DV SSL)
このタイプのSSL証明書は、ブログ、ソーシャルメディアアプリ、および個人のWebサイトを保護するのに理想的です。認証局は組織のIDを保証せず、ドメインの所有権のみが検証されます。
Extended Validation(EV SSL)
認証局はドメインの所有権を確認し、EV証明書に関連付けられている組織の徹底的な調査を実施します。拡張検証リクエストを確認するときは厳格なルールに従い、CAは次のことを確認する必要があります。
- 組織の身元は公式記録と一致します。
- エンティティの物理的、法的、および運用上の存在。
- 組織には、SSL証明書で指定されたドメインを使用する排他的権利があります。
- 組織はEVSSL証明書の発行を適切に承認しています。
SSL証明書を作成する
証明書署名要求を生成する方法は、使用しているプラットフォームと選択した特定のツールによってのみ異なります。
OpenSSLを使用してCSRを生成する 。
OpenSSLは、CSRファイルとSSL証明書を操作するために広く使用されているツールであり、OpenSSLの公式Webサイトからダウンロードできます。これはSSL/TLSのオープンソース実装ツールであり、アクティブなすべてのインターネットサーバーの約65%で使用されているため、非公式の業界標準となっています。
DebianとUbuntu
dpkg -l |grep openssl
OpenSSLパケットがインストールされている場合、次の結果が返されます。
ii libgnutls-openssl27:amd64 2.12.23-12ubuntu2.4 amd64 GNU TLS library - OpenSSL wrapper
ii openssl 1.0.1f-1ubuntu2.16 amd64 Secure Sockets Layer toolkit - cryptographic utility
このような結果が表示されない場合は、次のコマンドを実行してOpenSSLをインストールします。
apt-get install openssl
RedHatまたはCentOS
Red Hat(リリース7.0以降)には、OpenSSLの限定バージョンがプリインストールされている必要があります。 IDEA、RC5、およびMDC2のサポートは限られているため、不足している機能をインストールすることをお勧めします。これについて詳しくは、OpenSSLのドキュメントをご覧ください。
OpenSSLがyumサーバー(Red HatやCentOSなど)にインストールされているかどうかを確認するには、次のコマンドを実行します。
rpm -qa | grep -i openssl
このコマンドは次の結果を返すはずです:
openssl-1.0.1e-48.el6_8.1.x86_64
openssl-devel-1.0.1e-48.el6_8.1.x86_64
openssl-1.0.1e-48.el6_8.1.i686
出力形式が異なる場合は、OpenSSLがサーバーにインストールされていないことを意味します。次のコマンドを実行してOpenSSLをインストールします。
yum install openssl openssl-devel
証明書署名要求(CSR)とは何ですか?
証明書署名要求(CSR) 組織とドメインに関する最も重要な情報が含まれています。
通常、SSL証明書がインストールされるサーバー上でローカルにCSRとキーのペアを生成します。ただし、これは厳密な規則ではありません。 1つのサーバーでCSRとキーのペアを生成し、別のサーバーに証明書をインストールできます。ただし、それは物事をより複雑にします。そのシナリオについても説明します。
Secure Socket Layer(SSL)は、ランダムに生成された数値の2つの長い文字列を使用します。これは、プライベートと呼ばれます。 および公開鍵 。公開鍵はSSL証明書の一部であり、サーバーに公開されているため、パブリックドメインで利用できます。
秘密鍵は、それが生成されたCSRに対応している必要があり、最終的には、CSRから作成された証明書と一致する必要があります。秘密鍵が欠落している場合は、SSL証明書が証明書署名要求を生成したのと同じサーバーにインストールされていない可能性があります。
CSRには通常、次の情報が含まれています。
パラメータ | 説明 | 値の例 |
共通名またはFQDN | FQDNは、Webサイトの完全修飾ドメイン名です。ユーザーがウェブブラウザに入力するものと同じである必要があります。 | www.phoenixnap.com |
組織名(例:会社) | LLC、Corpなどのサフィックスを含む組織の正式な氏名 | PhoenixNAP、LLC |
組織単位名 | この証明書を扱う組織内の部門。 | NOC |
地域名(例:都市) | 組織が所在する都市。 | フェニックス |
州/地域/州(フルネーム) | 組織が所在する州または地域。 | アリゾナ |
国コード(2文字のコード) | 組織が所在する国。常に2文字のISOコードとして入力します。 | 米国 |
メールアドレス | サイトのウェブマスターへの連絡に使用されるメールアドレス。 | [メール保護] |
公開鍵 | CSRで生成され、証明書に入力される、自動的に作成されたキー。 | 秘密鍵に似たエンコードされたテキストブロック。以下の秘密鍵の例を参照してください。 |
考慮すべき特定の命名規則があることに注意してください。 組織名 および組織単位名 次の文字を含めることはできません: < > ~ ! @ # $ % ^ * / \ ( ) ?.,&
CSRを生成する方法
証明書署名要求(CSR)は、公開鍵と秘密鍵のペアで生成されます。公開鍵のみが認証局に送信され、SSL証明書に含まれ、秘密鍵と連携して接続を暗号化します。誰でも公開鍵にアクセスでき、SSL証明書が本物であることを確認します。
秘密鍵は、エンコードされたテキストのブロックであり、証明書とともに、2台のマシン間の安全な接続を検証します。公的にアクセスしたり、CAに送信したりしないでください。
証明書の整合性は、秘密鍵を知っているのはあなただけであるという事実に依存しています。侵害されたり紛失したりした場合は、できるだけ早く新しい秘密鍵を使用して証明書の鍵を再設定してください。ほとんどのCAは、このサービスに対して料金を請求しません。
オプション1:CSRを生成する
最初に行うことは、2048ビットのRSAキーペアをローカルで生成することです。このペアには、秘密鍵と公開鍵の両方が含まれます。 Javaキーツールまたはその他のツールを使用できますが、OpenSSLを使用します。
証明書署名要求(CSR)を使用して公開鍵と秘密鍵を生成するには、次のOpenSSLコマンドを実行します。
openssl req -out certificatesigningrequest.csr -new -newkey rsa:2048 -nodes -keyout privatekey.key
キーペアを使用してCSRを生成すると、人間が読み取れる形式ではないため、CSRに含まれる情報を確認するのは困難です。次のOpenSSLコマンドを使用して、サーバー上のCSRを簡単にデコードできます。
openssl req -in server.csr -noout -text
CSRをデコードし、認証局に送信する前に、組織に関する正しい情報が含まれていることを確認することをお勧めします。 Webには、CSRファイルのコンテンツをコピーして貼り付けるだけで同じことを実行できるCSRデコーダーがたくさんあります。
ご参考までに、2つのオンラインCSRデコーダーツールをリストしました。
- SSLショッパー
- レッドケストレル
オプション2:既存の秘密鍵のCSRを生成する
CSRを生成するときはいつでも、新しい秘密鍵を発行することをお勧めします。何らかの理由で、既存の秘密鍵の証明書署名要求を生成する必要がある場合は、次のOpenSSLコマンドを使用します。
openssl req -out CSR.csr -key privateKey.key -new
オプション3:既存の証明書と秘密鍵のCSRを生成する
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
これが役立つ可能性の低いシナリオの1つは、既存の証明書を更新する必要があるが、あなたも認証局も元のCSRを持っていない場合です。これにより、SSL証明書からドメインと組織に関する情報が抽出され、それを使用して新しいCSRが作成されるため、時間を節約できます。
オプション4:自己署名証明書を生成する
自己署名証明書は通常、テストおよび開発環境とイントラネットで使用されます。次のOpenSSLコマンドを使用して自己署名証明書を生成しましょう:
openssl req -newkey rsa:2048 -nodes -keyout domain.key -x509 -days 365 -out domain.crt
-days
パラメータは365に設定されています。これは、証明書が次の365日間有効であることを意味します。 -x509
パラメータは、これが自己署名証明書になることを示します。一時的なCSRが生成され、必要な情報を収集するためにのみ使用されます。
認証局は、自己署名証明書を検証しません。したがって、検証済みの証明書ほど安全ではありません。 CAが証明書に署名していない場合、すべての主要なブラウザに、下の画像に示すような「信頼できない証明書」エラーメッセージが表示されます。
秘密鍵をパスワードで保護したくない場合は、 -nodes
を追加できます。 パラメータ。
オプション5:既存の秘密鍵とCSRから自己署名証明書を生成する
すでにCSRとプライベートがあり、自己署名証明書を生成する必要がある場合は、次のコマンドを使用します。
openssl x509 \ -signkey domain.key \ -in domain.csr \ -req -days 365 -out domain.crt
-days
パラメータは365に設定されています。これは、証明書が次の365日間有効であることを意味します。
CSRファイルの内容をコピーする方法
CSRファイルが置かれているディレクトリを開きます。次のコマンドを入力します:
sudo cat domain.csr
d omainを置き換えます CSRのFQDNパラメータを使用します。このコマンドは、CSRファイルの内容を表示します。 「BEGINCERTIFICATEREQUEST」から始まり、「ENDCERTIFICATEREQUEST」で終わるすべてのコンテンツをコピーします。
証明書の更新–古いCSRを再利用しないでください
一部のWebサーバーが証明書の更新に古いCSRの使用を許可しているからといって、それらを使用する必要があるとは限りません。セキュリティ上の予防措置として、証明書を更新するときは常に新しいCSRと秘密鍵を生成してください。同じ秘密鍵にしがみつくのは、セキュリティの脆弱性で舗装された道です。
また、有効期限が切れる前にSSL証明書を更新することをお勧めします。それ以外の場合は、新しい証明書の購入が必要になります。
CSR、SSL証明書、およびキーを確認する方法
すでに述べたように、証明書を申請する前に、CSRで提供されている情報を確認することをお勧めします。次のコマンドを使用して、証明書署名要求、SSL証明書、およびキーを確認します。
CSR
openssl req -text -noout -verify -in server.csr
このコマンドは、CSRを確認し、リクエストで提供されたデータを表示します。
キー
次のコマンドは、キーとその有効性を確認します。
openssl rsa -in server.key -check
SSL証明書
証明書、その有効期限、および署名者を確認する必要がある場合は、次のOpenSSLコマンドを使用します。
openssl x509 -in server.crt -text -noout
秘密鍵
秘密鍵は、人間が読める形式ではないBase-64ベースのPEM形式でエンコードおよび作成されます。任意のテキストエディタで開くことができますが、表示されるのは、開始と終了の見出しで囲まれたランダムな記号のように見える数十行だけです。以下の秘密鍵の例を参照してください:
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCVqGpH2S7F0CbEmQBgmbiDiOOGxhVwlG+yY/6OBQoPKcx4Jv2h
vLz7r54ngjaIqnqRNP7ljKjFLp5zhnAu9GsdwXbgLPtrmMSB+MVFHTJvKjQ+eY9p
dWA3NbQusM9uf8dArm+3VrZxNHQbVGXOIAPNHTO08cZHMSqIDQ6OvLma7wIDAQAB
AoGAbxKPzsNh826JV2A253svdnAibeSWBPgl7kBIrR8QWDCtkH9fvqpVmHa+6pO5
5bShQyQSCkxa9f2jnBorKK4+0K412TBM/SG6Zjw+DsZd6VuoZ7P027msTWQrMBxg
Hjgs7FSFtj76HQ0OZxFeZ8BkIYq0w+7VQYAPBWEPSqCRQAECQQDv09M4PyRVWSQM
S8Rmf/jBWmRnY1gPPEOZDOiSWJqIBZUBznvOPOOQSH6B+vee/q5edQA2OIaDgNmn
AurEtUaRAkEAn7/65w+Tewr89mOM0RKMVpFpwNfGYAj3kT1mFEYDq+iNWdcSE6xE
2H0w3YEbDsSayxc36efFnmr//4ljt4iJfwJAa1pOeicJhIracAaaa6dtGl/0AbOe
f3NibugwUxIGWkzlXmGnWbI3yyYoOta0cR9fvjhxV9QFomfTBcdwf40FgQJAH3MG
DBMO77w8DK2QfWBvbGN4NFTGYwWg52D1Bay68E759OPYVTMm4o/S3Oib0Q53gt/x
TAUq7IMYHtCHZwxkNQJBAORwE+6qVIv/ZSP2tHLYf8DGOhEBJtQcVjE7PfUjAbH5
lr++9qUfv0S13gXj5weio5dzgEXwWdX2YSL/asz5DhU=
-----END RSA PRIVATE KEY-----
ほとんどの場合、秘密鍵コードはサーバーのファイルシステムにインポートする必要はありません。これは、CSRの生成中にバックグラウンドで作成され、サーバーに自動的に保存されるためです。 SSL証明書のインストール中に、システムがキーをフェッチします。
証明書と秘密鍵が一致するかどうかを確認する
確認するには、md5チェックサムを印刷して比較する必要があります。次のコマンドを実行します。
openssl x509 -noout -modulus -in server.crt| openssl md5
openssl rsa -noout -modulus -in server.key| openssl md5
SSL問題のトラブルシューティング
システムは秘密鍵を自動的に取得しません
一部のシステムは、秘密鍵をフェッチする手順を自動化しません。さらに、既存の証明書を別のサーバーにインストールする必要がある場合、それが秘密鍵をフェッチすることを期待できないことは明らかです。ここでの主な問題は、キーの正確な位置を見つける方法です。キーを取得する方法は、使用しているサーバーOSと、コマンドラインインターフェイスまたは特定のタイプのWebホスティングコントロールパネルがCSR生成に使用されたかどうかによって異なります。
以前にインストールした秘密鍵を見つける必要があります
証明書がすでにインストールされている場合は、以下の手順に従ってください。一般的なオペレーティングシステムで秘密鍵を見つけるのに役立ちます。
Nginx
ドメインの仮想ホストファイルでサーバーの秘密鍵の場所を見つけることができるはずです。
サイトのルートサーバーの場所に移動します(通常は / var / www / directory )そしてサイトのメイン設定ファイルを開きます。 ssl_certificate_key
を探します 秘密鍵のファイルパスを提供するディレクティブ。
ssl_certificate_key
が見つからない場合 ディレクティブの場合、SSLの詳細用に別の構成ファイルがある可能性があります。 ssl.confなどの説明的なものを探します 。
アパッチ
ApacheでOpenSSLライブラリを使用する場合、秘密鍵はデフォルトで/ usr / local/sslに保存されます。 openssl version -a
を実行します 、実行しているOpenSSLのバージョンを識別するOpenSSLコマンド。
出力には、秘密鍵を保持するディレクトリが表示されます。以下の出力例を参照してください:
OpenSSL 1.0.2g 1 Dec 2016
built on: reproducible build, date unspecified
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -
D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -g -O2 -fstack-protector-
strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-
Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -
DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -
DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -
DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/usr/lib/ssl"
最後の行OPENSSLDIR
ファイルパスを定義します。提供されている例では、これがデフォルトの場所です /usr/lib/ssl
。
OpenSSLを使用してCSRを生成しなかった場合は、メインのApache構成ファイル( apache2.conf
)を見つけてアクセスする必要があります。 またはhttpd.conf
。 SSLCertficateKeyFileディレクティブは、秘密鍵のファイルパスを指定します。
Windows(IIS)
Windowsインターネットインフォメーションサービスを実行しているサーバーでは、通常のWindows OSが重要なシステムデータを保存するのと同じように、オペレーティングシステムは秘密キーを隠しフォルダーに保存します。
ただし、 .pfxをエクスポートする ファイルの場合、秘密鍵と証明書を取得できます。これを行うには、以下の手順に従います。
- Microsoft管理コンソールを開きます (MMC)。
- コンソールルートの下にあり、証明書(ローカルコンピューター)を展開します ツリー。
- 証明書は個人にあります またはウェブホスティングフォルダ 。探している証明書を見つけてください。各証明書は、その共通名(ドメイン)で識別できます。
- エクスポートする証明書を右クリックして、[すべてのタスク]を選択します>エクスポート 。
- ガイド付きウィザードに従って、 .pfxをエクスポートします。 ファイル。
バックアップを保存したり、別のWindowsサーバーに証明書をインストールしたりする場合に必要なものがあります。
Windowsを実行していない別のサーバー(Apacheなど)に証明書をインストールする必要がある場合は、.pfxファイルを変換し、.keyファイルと.crt/.cerファイルを分離する必要があります。 OpenSSLを使用してこれを行うことができます。
SSL証明書をWindowsサーバーからWindows以外のサーバーに移動するにはどうすればよいですか?
WindowsサーバーからWindows以外のサーバーに証明書を移動するには、OpenSSLを使用して.pfxファイルから秘密鍵を抽出する必要があります。
- 上記のセクションの説明に従って.pfxファイルをダウンロードした後、次のOpenSSLコマンドを実行して、ファイルから秘密鍵を抽出します。
openssl pkcs12 -in mypfxfile.pfx -out privatekey.txt -nodes
mypfxfile.pfx Windowsサーバー証明書のバックアップです。
- このコマンドはprivatekey.txtを作成します 出力ファイル。テキストエディタを使用してファイルを開くと、リストの上部に標準形式の秘密鍵が表示されます。
-----BEGIN RSA PRIVATE KEY-----
(Encrypted Text Block)
-----END RSA PRIVATE KEY-----
- 「BEGIN」タグと「END」タグを含む秘密鍵をコピーして、新しいテキストファイルに貼り付けます。テキストファイルをYour_Domain_Name.keyとして保存します。
秘密鍵が見つかりません
秘密鍵が見つからない場合は、手がかりを探してください。注意すべき点の1つは、サーバーが機能するHTTPS接続を提供しているかどうかです。その場合、秘密鍵はサーバーにアクセス可能であり、サーバーのどこかにある可能性があります。
論理的な手順は、 .keyを検索することです。 ファイル。場合によっては、OpenSSLは.keyファイルをOpenSSL -req
と同じディレクトリに保存します。 コマンドが実行されました。
すべてを試しても.keyファイルが見つからない場合は、キーが失われる可能性がわずかにあります。慌てる必要はありません。賢明な方法は、新しいCSRを生成し、証明書を再発行することです。今回は秘密鍵の場所を忘れないでください。
CSRを変換するためのOpenSSLコマンド
Apacheサーバーを使用している場合、証明書署名要求(CSR)とキーはPEM形式で保存されます。しかし、CSRをTomcatまたはWindowsIISサーバーに転送したい場合はどうでしょうか。さて、あなたは標準のPEMファイルをPFXファイルに変換しなければならないでしょう。次のコマンドは、まさにそれを行うのに役立ちます。
PEM CSRと秘密鍵をPKCS12(.pfx .p12)に変換します
FKCS12ファイルは、WindowsIISで証明書をエクスポート/インポートするために使用されます。
openssl pkcs12 \ -inkey domain.key \ -in domain.crt \ -export -out domain.pfx
これにより、秘密鍵とCSRが取得され、単一の.pfxファイルに変換されます。エクスポートパスフレーズを設定できますが、空白のままにすることができます。証明書の文字列を単一のPEMファイルにエンドツーエンドで結合することにより、証明書のチェーンを.pfxファイル形式にエクスポートできることに注意してください。
PKCS12をPEMCRSに変換する
openssl pkcs12 \ -in domain.pfx \ -nodes -out domain.combined.crt
.pfxファイルに証明書のチェーンが含まれている場合、.crtPEMファイルにも複数のアイテムが含まれます。
PEMをDERに変換
DERは、通常Javaで使用されるバイナリ形式です。 ASCII PEMファイルをDERに変換するには、次のOpenSSLコマンドを使用します。
openssl x509 \ -in domain.crt \ -outform der -out domain.der
DERをPEMに変換
.derファイルをPEMに変換する必要がある場合は、次のOpenSSLコマンドを使用します。
openssl x509 \ -inform der -in domain.der \ -out domain.crt
暗号化されていない秘密鍵を暗号化する
次のOpenSSLコマンドは、暗号化されていない秘密鍵を取得し、定義したパスフレーズで暗号化します。
openssl rsa -des3 \ -in unencrypted.key \ -out encrypted.key
秘密鍵を暗号化するためのパスフレーズを定義します。
暗号化された秘密鍵を復号化する
次のOpenSSLコマンドは、暗号化された秘密鍵を取得して復号化します。
openssl rsa \ -in encrypted.key \ -out decrypted.key
プロンプトが表示されたら、パスフレーズを入力して秘密鍵を復号化します。