ツール

Windows11環境にOpenSSLで自己証明書を作成する

以前、docker-composeでWordPressをローカル環境に構築しました。

今回は、WordPress環境をSSL化するために自己証明書が必要なので、Windows11環境でOpenSSLを使って作成していきます。

 

OpenSSLダウンロードとインストール

以下のサイトにアクセスしてください。

https://slproweb.com/products/Win32OpenSSL.html

今回は、64bit版のWindowsなので「Win64 OpenSSL v3.0.5 Light」のEXEをクリックします。

Win64OpenSSL_Light-3_0_5.exeというファイルがダウンロードされます。

 

注意ポイント

【注意】今回の手順では「Win32/Win64 OpenSSL」を利用するには、事前にMicrosoft提供の「Visual C++ 」をインストールしておく必要があります。

https://learn.microsoft.com/ja-jp/cpp/windows/latest-supported-vc-redist?view=msvc-170

「Visual Studio 2015、2017、2019、および 2022」という見出しの下にあるリンクのうち、32bit版Windows OSなら「X86」、64bit版Windows OSなら「X64」の方をそれぞれクリックしてください!

Win64OpenSSL_Light-3_0_5.exeをダブルクリックします。

インストローラーの起動直後に「ユーザーアカウント制御」の警告ダイアログが表示されるので、「はい」をクリック。

I accept the agreement」をチェックし、「Next」をクリック。

ダウンロード先を指定します。特別指定が無ければデフォルトの保存場所で「Next」をクリックする。

「Next」をクリックする。

The OpenSSL binaries(/bin)directory」にチェックを入れて「Next」をクリック。

「Install」をクリックすると、インストールが開始されます。

最後に寄付に関するダイアログが表示されます。

仮に、寄付をしないでインストールを終了する場合は、チェックを全て外して「Finish」をクリック

 

環境変数の設定(openssl.exeにパスを通す)

OpenSSLはインストールできましたが、現状だと実行するのにいちいちopenssl.exeのダウンロード場所のフルパスを指定しなければならないのでこれは面倒です。

「openssl」コマンド一発で実行できるように、環境変数の設定を行います。

まず、システムプロパティを開きます。

開き方はいくつか方法があります。

・方法①

[Windows]ボタン+[R]ボタン同時押しで上記のダイアログを開き、「SystemPropertiesAdvanced」と入力して「OK」をクリック。

・方法②

コントロールパネル > システム > システム詳細」のリンクをクリック。

環境変数」のボタンをクリック。

個別のユーザのパスを変更する場合は上段を環境変数を編集し、全ユーザのパスを変更する場合は下段を編集します。

今回は個別に特定のユーザの環境変数を変更するので、上図のように上段のリストから「Path」を選択し「編集」をクリック。

新たにOpenSSLのパスを通します。

「新規」をクリック後、「参照」をクリックしてください。

上図のようにフォルダー参照が表示されるので、先ほどインストールしたOpenSSLのbinフォルダを指定します。

保存先は変更していなければ「C:\Program Files\OpenSSL-Win64\bin」になっているはずです。

ファルダ-を指定したら「OK」をクリックしてください。

上図の通りにOpenSSLのフルパスが表示されたOKです。「OK」ボタンをクリックしてください。

設定はこれで完了です。

最後に、ちゃんとパスが通っているか確認します。コマンドプロントかパワーシェルを実行して、以下のコマンドを実行してみてください。

$ openssl version

上図のようにOpenSSLのバージョンば表示されたらOKです!

鍵を作成する

秘密鍵の作成

秘密鍵(server.pem)の作成します。コマンドプロンプトかパワーシェルを起動してください。

鍵の保護はAES-128、鍵長2048ビットでRSA鍵を生成します。

# 所定のファルダに移動後以下のコマンドを実行
PS C:\> cd D:
PS D:\> cd D:\app\docker\wordpress_dev\web\ssl
PS D:\app\docker\wordpress_dev\web\ssl> openssl genrsa -aes128 -out wordpress_dev.pem 2048 
Enter PEM pass phrase: [パスフレーズ入力] 
Verifying - Enter PEM pass phrase: [パスフレーズ再入力]

鍵が作成されました。

PS D:\app\docker\wordpress_dev\web\ssl> ls 
ディレクトリ: D:\app\docker\wordpress_dev\web 
Mode                 LastWriteTime         Length Name 
----                 -------------         ------ ---- 
-a----        2022/10/16     23:57           1884 wordpress_dev.pem

公開鍵の作成

次に、公開鍵(server.csr)の作成します。

PS D:\app\docker\wordpress_dev\web\ssl> openssl req -new -key wordpress_dev.pem -out wordpress_dev.csr 
Enter pass phrase for wordpress_dev.key: 
You are about to be asked to enter information that will be incorporated 
into your certificate request. 
What you are about to enter is what is called a Distinguished Name or a DN. 
There are quite a few fields but you can leave some blank 
For some fields there will be a default value, 
If you enter '.', the field will be left blank. 
----- 
Country Name (2 letter code) [AU]:JP (国のコード)
State or Province Name (full name) [Some-State]:Tokyo (都道府県名)
Locality Name (eg, city) []:Shinjyuku (市区町村)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: (組織名、今回は入力せずEnter)
Organizational Unit Name (eg, section) []: (組織名、今回は入力せずEnter)
Common Name (e.g. server FQDN or YOUR name) []:wordpress_dev.com (ホスト名)
Email Address []:wordpres@dev.jp (メールアドレス)
Please enter the following 'extra' attributes 
to be sent with your certificate request 
A challenge password []:(Enter押す)
An optional company name []:(Enter押す)

正常に作成されました。

PS D:\app\docker\wordpress_dev\web\ssl> ls 
ディレクトリ: D:\app\docker\wordpress_dev\web\ssl 
Mode                 LastWriteTime         Length Name 
----                 -------------         ------ ---- 
-a----        2022/10/17      0:42           1084 wordpress_dev.csr 
-a----        2022/10/17      0:42           1732 wordpress_dev.pem 

[非推奨]このままだとSSL起動するたびにパスフレーズの入力が必要なので、秘密鍵からパスフレーズを削除します。

※注意:本番の環境では絶対にやらないでください。セキュリティ上は好ましくありません。テスト環境でのみ、この手順を実施してください。

PS D:\app\docker\wordpress_dev\web\ssl> cp wordpress_dev.pem wordpress_dev.pem.bk 
PS D:\app\docker\wordpress_dev\web\ssl> openssl rsa -in wordpress_dev.pem.bk -out wordpress_dev.pem 
Enter pass phrase for wordpress_dev.key:[パスフレーズ入力]
writing RSA key

サーバ証明書(crt)を作成していきます。

PS D:\app\docker\wordpress_dev\web\ssl> openssl x509 -in wordpress_dev.csr -days 365 -req -signkey wordpress_dev.pem > wordpress_dev.crt 
Certificate request self-signature ok 
subject=C = JP, ST = Tokyo, L = Shinjyuku, O = Internet Widgits Pty Ltd, CN = chunen-lifehack.com, emailAddress = chunen@lifehack.jp 
PS D:\app\docker\wordpress_dev\web\ssl> ls 
    ディレクトリ: D:\app\docker\wordpress_dev\web\ssl 
Mode                 LastWriteTime         Length Name 
----                 -------------         ------ ---- 
-a----        2022/10/17      0:43           2730 wordpress_dev.crt 
-a----        2022/10/17      0:42           1084 wordpress_dev.csr 
-a----        2022/10/17      0:42           1732 wordpress_dev.pem 
  • x509:X.509形式の証明書を発行
  • -in wordpress_dev.csr:CSRファイルを指定
  • -days 365:証明書の有効期限を指定
  • -req:入力ファイルがCSRファイルであることを示す
  • -signkey wordpress_dev.key:秘密鍵ファイルを指定

「wordpress_dev.crt」が作成された手順は完了!!

-ツール