SSL証明書の生成は困難な作業であり、多くの挫折と悲しみが伴います。しかし、そうする必要はありません!Windows 10とOpenSSLがあれば、このチュートリアルの助けを借りて、問題なく進むことができます。
この記事では、Windows 10にOpenSSLをインストールする方法、SSL証明書の生成、証明書のトラブルシューティングやデバッグ、および形式の変換について学びます。
では、PowerShellでWindows 10上のOpenSSLをマスターしましょう!
関連記事:Windows Certificate ManagerとPowerShellを使用した証明書の管理
前提条件
この記事では、実際に手を動かして学ぶ方法を紹介します。OpenSSLは元々Linux用のユーティリティですが、Windowsでも使用することができます。
- A Windows system with Local Administrator rights – The tutorial will be using Windows 10
- Windows PowerShell 5.1(Windowsに付属)またはPowerShell 7
- Windows用のパッケージマネージャーであるChocolateyがインストールされていること。
- PowerShell ISE、Visual Studio Code、または任意のテキストエディター
このガイドのスクリーンショットは、Windows 10ビルド1909とPowerShell 7から取得されました。
PowerShellとChocolateyを使用してWindows 10にOpenSSLをインストールする
Chocolateyを使用してインストール手順に従ってインストールしたと仮定します。最初のタスクは、Windows 10にOpenSSLをインストールすることです。これを行うには、PowerShellコンソールを開き、以下のようにchoco install OpenSSL.Light
を実行します。

以上です!これでPowerShellでOpenSSLがインストールされました。
作業ディレクトリを設定する
このチュートリアルでは、学習用にいくつかの証明書を作成します。ここで行うすべての作業が後でクリーンアップできる単一のフォルダに制限されるようにするために、フォルダを作成してください。
このチュートリアルでは、すべての証明書と関連ファイルをC:\certsフォルダに保存します。次のコマンドを実行して、PowerShellでフォルダを作成できます。
さあ、OpenSSLを設定しましょう。
OpenSSLの設定
デフォルトでは、Windows 10のOpenSSLには設定ファイルが含まれていません。これは意図的なものですが、カスタマイズできる多くの設定オプションがあるため、このガイドでは、セキュリティ要件に最適に合わせて後でカスタマイズできるサンプルの設定を使用します。
PowerShellを開き、以下のコマンドを実行します。このコマンドは、MITからサンプルの設定ファイルをダウンロードし、現在の作業ディレクトリにopenssl.cnfとして保存します。
これで、openssl.cnfファイルを開くことができ、以下のような内容が表示されます。

ダウンロードした設定は現在のままで動作します。本番環境ではデフォルトを使用しないでください!
PowerShellプロファイル環境変数の更新
スムーズに進めるために、Windows 10でPowerShellプロファイルを変更する必要があります。いくつかの環境変数を設定することで、インストールしたOpenSSLの異なるバージョン間を簡単に切り替えることができます。
I suggest adding two environment variables to your PowerShell profile called path
and OPENSSL_CONF
. You will update the PATH
environment variable to ensure you can run the openssl binary in any location while on the command line.
以下に、既にプロファイルを持っていない場合にPowerShellプロファイルを作成する方法が示されています。このコマンドはOpenSSLバイナリのパスをPATH
に追加し、設定ファイルのパスをOPENSSL_CONF
に割り当てます。
環境変数を使用するためには、プロファイルを再読み込みするには. $profile
と入力するか、PowerShellを閉じて再度開いてください。
これで、PowerShellのどの場所からでも以下に示すようにopensslバイナリを簡単に呼び出すことができます。

Windows 10でのOpenSSLを使用してCSRと秘密鍵を生成する
SSL証明書を作成する前に、証明書署名要求(CSR)を生成する必要があります。CSRは、公開鍵を証明機関(CA)と共有するためのエンコードされたファイルです。このファイルには識別情報、署名アルゴリズム、デジタル署名が含まれています。さあ、最初のCSRと秘密鍵を作成しましょう。
関連情報:一般人のためのX509証明書ガイド
CSRを作成するには、以下のコマンドを実行します。次のデモンストレーションで示されるように、OpenSSLは識別情報の入力を求めます。

完了すると、有効なCSRと秘密鍵が生成され、SSL証明書の発行に使用できます。
設定ファイルのデフォルト値は、CSRを生成するたびにデータを入力したくない場合に、さらに編集することができます。
利用可能なCSRオプションについての詳細や、マニュアルページでのサンプル設定の表示もご覧いただけます。OpenSSLには例も含まれている活発なGitHubリポジトリもあります。
RSAキーペアの生成
OpenSSLを使用してRSAキーペア(公開鍵/秘密鍵)も作成することができます。以下のように、まずgenrsa
サブコマンドを使用して秘密鍵を作成してください。
以下のコマンドを実行すると、Windows 10上のOpenSSLは、鍵長が2048ビットのRSA秘密鍵を生成します。この鍵は、現代のハードウェアではほぼ即座に生成されます。結果として得られる鍵は、作業ディレクトリに出力されます。
次に、作成したばかりの秘密鍵を使用して公開鍵を生成します。以下の構文は、rsa.privateの秘密鍵から作業ディレクトリにrsa.publicという公開鍵を作成します。
自己署名証明書の生成
場合によっては、自己署名証明書を生成する必要があるかもしれません。自己署名証明書は、ラボ使用には適していますが、本番環境で使用するには安全な方法ではありません。
次のタスクに移る前に、自己署名証明書を作成しましょう。そうするためには、以下のコマンドを入力してX509 SSL証明書を作成します。この証明書は、SHA256暗号化を使用し、2048ビットのRSA鍵長を使用して365日間有効となります。証明書は作業ディレクトリに保存されます。
これで、証明書をブラウザやサーバーにインポートする準備ができました。
OpenSSLを使用したCSR、証明書、鍵の検証
CSR、秘密鍵、証明書、またはPKCS#12の情報を確認すると、SSLエラーのトラブルシューティングに時間を節約できます。たとえば、証明書の作成に間違ったキーが使用されている場合があります。証明書に誤った識別情報が含まれている可能性もあります。
まず、req
コマンドといくつかのパラメータを使用してCSRを確認しましょう:

このガイドの最初にCSRを作成する際に入力した国名、組織名、およびメールアドレスなどの詳細情報は、正確に一致している必要があります。
また、x509
サブコマンドを使用して証明書を確認することもできます。いくつかのパラメータを指定します:

OpenSSLを使用して証明書を変換する
特定の証明書形式を使用しないアプリケーションがある場合があります。たとえば、HAproxyというアプリケーションでは、DER形式の証明書(.crt .cer .der)が必要な場合に、PEM形式の証明書が提供される可能性があります。
証明書の変換を実演するために、以前に作成した自己署名証明書をDER形式(certificate.crt)からPEM形式に変換してみましょう。以下のコードスニペットのコードを使用します。
次のコマンドは、-inform
パラメータを使用して-in
ファイルの形式に一致する形式で-out
形式を指定しています。
PEMからDER形式への変換も同じように逆の順序で行うこともできます。以下に示すように。
そして最後に、PKCS#12をPEM形式に変換したり、PEMをPKCS#12に変換したりすることもできます。これは、秘密鍵と証明書を含むファイル形式です。PEM形式に変換するには、pkcs12
サブコマンドを使用します。
また、-export
を使用してPEM形式の証明書と秘密鍵をPKCS#12形式に変換することもできます。以下の例では、SomeCertificate.crt
を入力ソースとして、秘密鍵を使用してPKCS#12形式の証明書をエクスポートしています。-certfile
オプションの値にMyCACert.crt
を使用することで、SomeCertificate.crt
を検証することもできます。
トラブルシューティングとデバッグ
CSR、証明書、およびキーペアの作成と変換ができるようになったので、それらのトラブルシューティングとデバッグ方法を学ぶ時が来ました。OpenSSLには、問題をトラブルシューティングするためのコマンドが用意されています。
また、OpenSSLを使用して証明書のファイル整合性をチェックし、データの破損の可能性をテストすることもできます。MD5チェックサムを使用して、次のコード例を使用して証明書、キー、およびCSRをテストできます。
元のハッシュを取得したら、その元のハッシュと現在のハッシュを比較して、証明書が変更されたり破損していないことを確認できます。
以下は、PowerShellで実行された場合のコードのサンプルです:

概要
この記事では、Windows 10にOpenSSLをインストールおよび設定する方法、CSR、キーペア、およびSSL証明書の作成方法について学びました。さらに、異なる証明書形式間の変換や、組み込みのサブコマンドを使用した基本的なトラブルシューティング方法についても学びました。