以前、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」が作成された手順は完了!!