OpenSSLで証明書を作成してMAMPのローカル環境でSSL設定する方法(Windows) | もやしほーむ OpenSSLで証明書を作成してMAMPのローカル環境でSSL設定する方法(Windows) | もやしほーむ

もやしほーむ

作成したプログラムの紹介や、日々の徒然について更新

OpenSSLで証明書を作成してMAMPのローカル環境でSSL設定する方法(Windows)

time 2022/04/28

OpenSSLで証明書を作成してMAMPのローカル環境でSSL設定する方法(Windows)

sponsored link

OpenSSLで証明書を作成してMAMPのローカル環境でSSL設定する方法(Windows)

MAMP環境でSSL化に必要な作業

  1. OpenSSLを使用して「CA証明書」と「サーバー証明書」を発行します。
  2. MAMAPのWebサーバーのApacheの設定ファイルにSSLを有効化するディレクティブを記述します。
  3. ブラウザの証明書ストアに、自分で発行した「CA証明書」をルート証明書として追加します。

※ CA(Certification Authority) : 認証局。

OpenSSLについて

OpenSSLは、業界標準でSSL通信の運用に使用されるオープンソースのソフトウェアです。自分の環境ではいつインストールされたかわからないのですが、Git管理ツール「MINGW64」(今回はターミナルとして利用)で、その存在を確認することができます。

openssl version -a

OpenSSLのバージョンを確認するコマンド。(オプション「-a」で、詳細情報を表示。)

OpenSSL 1.1.1m  14 Dec 2021
built on: Wed Dec 15 14:05:18 2021 UTC
platform: mingw64
options:  bn(64,64) rc4(16x,int) des(long) idea(int) blowfish(ptr)
compiler: gcc -m64 -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN -D_MT -DZLIB -DZLIB_SHARED -DNDEBUG -D__MINGW_USE_VC2005_COMPAT -DOPENSSLBIN="\"/mingw64/bin\""
OPENSSLDIR: "/mingw64/ssl"
ENGINESDIR: "/mingw64/lib/engines-1_1"
Seeding source: os-specifics

証明書の発行

「ルートCA証明書」と「サーバー証明書」を発行する作業をします。

  • ルートCA証明書 : 認証局(今回は自分)がルート認証局であることを証明するために自己署名した証明書です。(クライアントの証明書ストアに設置します。)
  • サーバー証明書 : ドメイン(今回の環境では「localhost」)の所有権者であることを証明するために認証局が発行した証明書です。(サーバーに設置します。)

ローカル運用なので、申請も発行もターミナルでOepnSSLを利用して自分で行います。

※ OpenSSLでは、公開鍵証明書の標準規格の「X.509」フォーマットで「証明書」が作成されます。(現行はバージョン3なので、「X.509 v3証明書」とも呼ばれます。)

手順

  1. 管理用のフォルダを作成。
  2. 「CAの秘密鍵」を作成。
  3. 「CAの秘密鍵」を使用して「CAの証明書署名要求」(CSR : Certificate Signing Request)を作成。
  4. 「CAの秘密鍵」で「CAのCSR」に自己署名して「CA証明書」を発行。
  5. 簡易なCAの環境を構築。
  6. 「サーバーの秘密鍵」を作成。
  7. 「サーバーの秘密鍵」を使用して「サーバーのCSR」を作成。
  8. 「CAの秘密鍵」と「CA証明書」を使用して「サーバーのCSR」にCAとして署名して「サーバー証明書」を発行。
管理用のフォルダを作成
mkdir -p /c/MAMP/conf/apache/ssl #ディレクトリを作成
cd /c/MAMP/conf/apache/ssl #作成したディレクトリに移動
「CAの秘密鍵」を作成

「openssl genrsa」コマンドを使用して、鍵長が2048bitのRSA暗号の「秘密鍵」を生成し、任意の名前(ここでは「localhost.key」)でファイルにして出力します。

※ 自分でローカル運用するだけなので、鍵長は特に気にせず現在の認証局で一般的とされる2048bitを指定していくことにします。(「openssl genrsa」コマンドのデフォルトの鍵長は2048bitなので、下記の場合は鍵長を指定しなくても同じです。)

openssl genrsa -out localhost.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
...................................................................................+++++
......................+++++
e is 65537 (0x010001)

「CAの秘密鍵」を使用して「CAの証明書署名要求」(CSR : Certificate Signing Request)を作成

「openssl req」コマンドを使用して、「CAの秘密鍵」(上記で作成した「localhost.key」)を使って「CSR」を生成し、任意の名前(ここでは「localhost.csr」)でファイルにして出力する。

「openssl req」コマンドを実行すると、「CSR」に必要な情報を対話型で求められるので入力します。

  • 自分で認証して自分だけが使うローカル運用なので、入力は任意です。
  • 「CA証明書」の場合、「Organization Name」だけは必須の項目です。
  • 他の情報も入力しておけば、証明書ストアに追加したあとで詳細情報として確認できます。
  • 情報を入力しない場合は、未入力のまま「enter」キーで決定して次へ進めます。(デフォルトの「config」ファイルに値があれば使用されます。)
  • 最後の「password」(下記では未入力)を「enter」キーで決定すると「localhost.csr」が作成されます。
openssl req -new -key localhost.key -out localhost.csr
#実行結果
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MOYASEAWORKS
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
「CAの秘密鍵」で「CAのCSR」に自己署名して「CA証明書」を発行

[ 証明書の拡張領域に追加する情報を用意 ]

Firefoxに対応するため、証明書の拡張領域の記述で「CA証明書」であることを明示しておく必要があります。

記述したい設定(「basicConstraints = critical,CA:true」)を、追加情報として任意のテキストファイルにして別途用意しておく。(ここでは「localhost.txt」。)

echo basicConstraints = critical,CA:true > localhost.txt

[ CA証明書の発行 ]

「openssl x509」コマンドを使用して、「CAの秘密鍵」で「CAのCSR」に自己署名をして「CA証明書」を生成します。

  1. 「有効期限」を設定。(下記では3650日に設定)
  2. 拡張領域に追加する情報を持った入力ファイルを指定。(ここでは「localhost.txt」)
  3. 「CAの秘密鍵」を指定。(ここでは「localhost.key」)
  4. 「CAのCSR」を指定。(ここでは「localhost.csr」)
  5. 出力ファイルの名前を指定。(ここでは「localhost.crt」)
openssl x509 -req -days 3650 -extfile localhost.txt -signkey localhost.key -in localhost.csr -out localhost.crt
Signature ok
subject=C = JP, ST = Tokyo, O = MOYASEAWORKS
Getting Private key

[ 証明書の内容を確認 ]

「openssl x509」コマンドを使用して、作成した「CA証明書」の内容を念のために確認します。

CSR作成時に入力した情報、有効期限、公開鍵、署名データなどが表示されます。

※ 正しく発行できていれば「localhost.txt」と「localhost.csr」は不要なので削除して構いません。

openssl x509 -in localhost.crt -text -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            1c:9c:4a:83:51:be:3a:7c:39:a3:23:1a:a8:42:51:3b:71:20:84:c6
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = JP, ST = Tokyo, O = MOYASEAWORKS
        Validity
            Not Before: Apr 28 09:24:02 2022 GMT
            Not After : Apr 25 09:24:02 2032 GMT
        Subject: C = JP, ST = Tokyo, O = MOYASEAWORKS
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:dc:7a:3b:5f:8b:b6:83:e2:ed:50:1f:8f:fa:0f:
                    be:17:c0:bd:e5:26:54:26:20:ed:ab:b2:ce:20:dd:
                    a3:96:b6:d1:97:99:a8:a7:b7:27:3e:78:80:61:ad:
                    e6:c9:57:e0:53:f3:b9:b1:4c:c5:5d:e1:3c:70:c9:
                    af:19:7c:e6:62:94:98:93:62:7c:ad:fe:e5:99:b6:
                    ec:c1:ff:8e:a7:ba:4c:5f:8c:da:59:22:c1:8f:c4:
                    ba:4b:0c:33:b8:71:ab:75:86:9c:4c:6a:ef:8e:65:
                    24:ad:52:ed:2b:04:87:41:3e:61:3a:20:f2:f0:49:
                    54:bb:cc:06:a2:d8:a6:92:c5:25:37:76:25:d1:fc:
                    86:23:68:b4:91:47:16:cd:36:da:a1:6a:f5:9c:95:
                    fe:b9:18:7f:5c:89:48:f0:9a:bd:24:db:84:ff:40:
                    e7:56:e7:d3:ee:5c:32:df:ff:72:c7:d3:e6:3b:16:
                    69:89:60:4b:55:7b:30:54:65:8d:18:8b:e3:43:c7:
                    be:4d:b3:91:18:f5:b1:2d:e7:79:39:d0:de:a5:e6:
                    ca:d3:56:de:c2:25:b7:6d:bf:07:3f:3b:00:cc:83:
                    b1:66:71:65:8c:6c:a7:7c:c8:ac:ac:15:b4:fd:82:
                    ad:5e:86:5a:f4:3a:13:c9:06:65:b9:29:80:be:b7:
                    60:09
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
         45:83:30:35:fb:77:63:36:38:76:96:33:f7:4b:71:bc:ce:5e:
         5f:fd:9b:06:ea:2a:3c:bc:f6:92:f3:8e:18:b8:53:62:92:55:
         61:9e:86:e2:de:2e:64:e3:f2:8a:20:42:94:1b:06:26:06:13:
         c1:3c:e4:29:f5:35:c6:e7:bf:4e:6f:d2:e2:03:e6:f1:3e:34:
         2c:67:0d:1b:64:79:70:51:d0:6e:4e:86:f3:c7:48:d2:c8:92:
         88:1d:d7:b9:62:b2:65:1c:76:25:21:a8:b8:26:e5:11:11:1f:
         ca:51:bd:92:3c:17:1d:cb:5d:0a:21:ce:40:f3:fa:29:fc:3b:
         ec:96:b1:ac:38:de:22:35:16:df:a0:23:63:36:90:1b:67:ac:
         7f:46:c9:50:15:81:26:00:ab:dd:9c:e0:25:a1:4a:dd:13:1f:
         06:8c:04:d8:5e:78:fa:29:65:2e:f9:05:72:0d:8a:72:1a:8a:
         81:91:54:4f:79:6e:6b:0f:5d:fa:46:54:7e:87:0e:47:14:e9:
         61:b9:6b:69:63:e8:b4:8d:1e:fe:39:fc:d2:4c:d9:fc:75:63:
         a8:60:f0:68:dd:a5:bf:e1:2a:61:de:31:df:d8:ee:f1:eb:61:
         2b:98:f1:f3:a2:26:ae:d8:67:80:d7:77:76:a3:66:a8:ca:22:
         51:27:2a:0e

「サーバーの秘密鍵」を作成

自分がCAとなって「openssl ca」コマンドを使用して「サーバー証明書」を発行するので、事前に簡易なCA環境を構築します。

※ 「openssl ca」コマンドは、最小限のCAアプリケーション機能を提供するコマンドです。

[ CA環境構築の各ファイルを作成 ]

必要なファイルを、ターミナルからコマンドで生成します。

  1. CA環境構築に必要なファイルをまとめて保管するディレクトリを作成。(ここでは「moyasea」)
  2. 初期値「01」を記述したシリアルナンバーの管理ファイルを作成。(ここでは「serial」)
  3. データベース用のファイルを作成。(ここでは「moyaseadb」)
  4. 「config」ファイルを作成。(ここでは「openssl.cnf」)
mkdir moyasea #ディレクトリを作成
echo 01 > moyasea/serial #シリアルナンバー用のファイルを作成
touch moyasea/moyaseadb #データベース用のファイルを作成
touch moyasea/openssl.cnf #「config」ファイルを作成

[ 「config」ファイルに設定内容を記述 ]

作成した「config」ファイル(「openssl.cnf」)に、「openssl ca」コマンドで使用する設定と値を記述しておきます。

  • 「openssl ca」コマンドを実行すると、「config」ファイル内の「[ ca ]」セクションが読み込まれます。(「openssl」コマンドのサブコマンド名に該当するセクションの記述が読み込まれます。)
  • 読み込まれたセクション内の設定値に他のセクション名が指定されていれば、さらにそのセクションの設定が読み込まれます。
  • ChromeとFirefoxに対応するために、「x509_extensions」の項目に以下の2つの設定が必要。(「X.509 v3」フォーマットの拡張領域へ記述される。)
    Chrome対応 : 「subjectAltName」の値に自分のローカル環境でのドメインとIPアドレスを記述。
    Firefox対応 : 「basicConstraints」の値に「サーバー証明書」であることを明示する「CA:false」を記述。

ターミナル上でCUIエディターを使用するか、GUIエディターで「openssl.cnf」を開いて下記を記述して保存します。

[ ca ]
default_ca			= CA_default

[ CA_default ]
dir				= /c/MAMP/conf/apache/ssl/moyasea
new_certs_dir		        = $dir
serial				= $dir/serial
database			= $dir/moyaseadb
default_md			= sha256
policy				= policy_anything
x509_extensions		        = v3_ca

[ policy_anything ]
countryName			= optional
stateOrProvinceName		= optional
localityName			= optional
organizationName		= optional
organizationalUnitName	= optional
commonName			= supplied
emailAddress			= optional

[ req ]
default_bits		        = 2048
distinguished_name	        = req_distinguished_name
x509_extensions                 = v3_ca

[ req_distinguished_name ]
countryName			= Country Name (2 letter code)
countryName_default		= AU
countryName_min			= 2
countryName_max			= 2

stateOrProvinceName		= State or Province Name (full name)
stateOrProvinceName_default	= Some-State

localityName			= Locality Name (eg, city)

0.organizationName		= Organization Name (eg, company)
0.organizationName_default	= Internet Widgits Pty Ltd

organizationalUnitName	        = Organizational Unit Name (eg, section)
#organizationalUnitName_default	=

commonName			= Common Name (e.g. server FQDN or YOUR name)
commonName_max			= 64

emailAddress			= Email Address
emailAddress_max		= 64

[ v3_ca ]
subjectAltName			= DNS:localhost, IP:127.0.0.1
basicConstraints		= CA:false

[サーバーの秘密鍵を作成]

「CAの秘密鍵」のときと同じように、「サーバーの秘密鍵」を生成して任意の名前(ここでは「server.key」)でファイルにして出力します。

openssl genrsa -out server.key 2048
Generating RSA private key, 2048 bit long modulus (2 primes)
.................................................................................+++++
..............................................+++++
e is 65537 (0x010001)

「サーバーの秘密鍵」を使用して「サーバーのCSR」を作成

「CAのCSR」のときと同じように、「サーバーの秘密鍵」(「server.key」)を使って「サーバーのCSR」を生成し、任意の名前(ここでは「server.csr」)でファイルにして出力します。

このときに、すべての入力情報を「CAのCSR」と全く同じ内容で設定すると、「発行した証明書の申請者」とそれを認証している「CA証明書」(認証局)が同一となるため、このあとで発行する証明書が「自己署名証明書」扱いになってしまい、「サーバー証明書」としては使えなくなってしまいます。(最低1つ以上の項目で入力内容を変える必要があります。ここでは「CN」の有無が異なります。)

  • 「サーバー証明書」のCSRの場合、「Common Name」は必須の項目です。
  • 「Common Name」は、実際に「サーバー証明書」を設置するサイトのドメインを入力する必要があります。(今回は「localhost」。)
  • 最後の「password」(下記では未入力)を「enter」キーで決定すると「server.csr」が作成されます。
openssl req -new -key server.key -out server.csr
#実行結果
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MOYASEAWORKS
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

「CAの秘密鍵」と「CA証明書」を使用して「サーバーのCSR」にCAとして署名して「サーバー証明書」を発行

「サーバー証明書」を作成(発行)

「openssl ca」コマンドを使用して、自分がCAとなって「サーバー証明書」を発行します。

  1. 「有効期限」を設定。(下記では3650日に設定)
  2. 「サーバーのCSR」を指定。(ここでは「server.csr」)
  3. 「CAの秘密鍵」を指定。(ここでは「localhost.key」)
  4. 「CAの証明書」を指定。(ここでは「localhost.crt」)
  5. 出力ファイルの名前を指定。(ここでは「server.crt」)
  6. 「コマンドの設定ファイル」を指定。(ここでは「openssl.cnf」)
openssl ca -days 3650 -in server.csr -keyfile localhost.key -cert localhost.crt -out server.crt -config moyasea/openssl.cnf -batch

ここで次のようなエラーが出て詰んでいます。どうもserver.crtとserver.keyだけあればいいのかも知れません。

/c/MAMP/conf/apache/ssl/moyasea: No error
Using configuration from moyasea/openssl.cnf
ca: /c/MAMP/conf/apache/ssl/moyasea is not a directory
別の手段として

「openssl x509」コマンドを使用して、「サーバー証明書」を発行する。

  1. 「有効期限」を設定。(下記では3650日に設定)
  2. 「サーバーのCSR」を指定。(ここでは「server.csr」)
  3. 出力ファイルの名前を指定。(ここでは「server.crt」)
openssl x509 -req -days 3650 -signkey server.key -in server.csr -out server.crt
Signature ok
subject=C = JP, ST = Tokyo, O = MOYASEAWORKS, CN = localhost
Getting Private key

[証明書の中身を確認]

openssl x509 -in server.crt -text -noout
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            1e:af:e1:f5:57:53:43:63:8b:5c:39:db:25:07:33:64:1a:03:ac:97
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = JP, ST = Tokyo, O = MOYASEAWORKS, CN = localhost
        Validity
            Not Before: Apr 28 09:35:44 2022 GMT
            Not After : Apr 25 09:35:44 2032 GMT
        Subject: C = JP, ST = Tokyo, O = MOYASEAWORKS, CN = localhost
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:b6:3c:2a:c8:4e:19:ef:66:38:08:0b:27:cb:ed:
                    77:dc:1a:fa:f8:b4:b9:79:bc:ad:e2:ca:36:1e:1a:
                    0c:f8:90:8d:6e:49:44:5d:66:24:41:5f:ea:36:71:
                    42:51:63:fd:2b:10:7f:87:e2:56:ae:f0:24:28:57:
                    cf:ad:9f:79:7f:ea:48:3d:4b:ba:b8:9e:15:15:37:
                    8a:41:77:0b:04:18:31:03:33:1d:4f:d0:93:65:ed:
                    1a:d3:0f:ed:fd:06:33:ba:d8:ce:3b:f7:a6:76:02:
                    97:37:85:51:e3:21:13:e0:24:52:b2:de:97:5d:a7:
                    76:03:a1:90:05:66:67:40:e8:59:db:be:a5:b1:0d:
                    76:d5:7c:5a:00:3a:3a:28:cb:77:81:0b:36:78:98:
                    2f:de:d4:92:b7:87:99:28:52:14:21:ae:e1:e2:d8:
                    17:46:2f:43:c0:46:f6:fe:30:19:a9:bc:76:9c:e2:
                    3e:8f:e4:92:a4:cf:25:02:39:b2:d9:a3:01:a5:56:
                    76:8c:89:65:67:5c:68:79:c4:25:d2:c0:37:b6:b6:
                    08:b0:9c:65:c1:4b:f5:e6:d3:2c:b6:aa:e0:a2:97:
                    4f:b7:92:85:dc:bd:77:04:0e:cb:fe:20:99:7e:4c:
                    d8:b6:e6:f3:16:40:14:2c:c4:aa:2e:cf:f1:e6:34:
                    53:61
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         95:42:ba:03:a0:b0:cc:16:fc:fc:7a:38:c7:7e:4f:1b:90:f4:
         b7:80:7a:72:41:41:b8:5d:28:e8:bd:5f:f7:87:eb:69:fe:c4:
         8a:31:55:da:ba:1d:eb:fc:2e:10:46:cc:51:6a:9e:bc:e1:db:
         00:31:9b:b1:03:ff:1b:c0:0a:2b:2e:f4:79:83:56:a5:a3:27:
         e0:ab:04:91:9c:2f:17:c7:b8:72:57:c2:d6:1b:2c:3d:10:b1:
         8b:21:cf:b3:7d:5d:e5:4e:b8:44:39:2d:e6:44:7e:21:86:a1:
         8e:1d:22:13:c6:7b:e7:53:e9:74:03:dd:03:b9:68:23:45:a8:
         66:d0:d3:c9:03:f6:b4:2f:03:a5:b7:f3:a6:15:7e:d4:04:14:
         d3:de:58:99:cc:5f:75:f5:17:33:9a:86:d6:c8:c1:25:fc:52:
         2c:d9:81:55:3b:ec:8a:96:70:b8:45:38:3e:23:dd:64:e5:6d:
         89:ea:34:74:c5:ba:43:90:a5:d7:59:40:1a:fd:0d:ac:2d:7c:
         21:4a:8c:1a:f6:d0:69:50:ad:a1:8c:10:16:03:b4:d7:b4:48:
         14:93:b3:09:d3:58:c3:c3:08:5b:ed:21:8f:b0:7a:b3:64:18:
         be:91:2f:5d:e8:0f:2f:3b:ab:82:2d:0e:8e:62:71:ff:e5:5b:
         f7:80:75:b3

証明書ファイルの有効化

証明書を発行しても、有効化しておかなくてはMAMPは動きません。

server.crtとlocalhost.crtの有効化を行います。

「証明書のインストール」をクリックします。

「ローカルコンピューター」を選択し、「次へ」を押します。

「証明書をすべて次のストアに配置する」を選択し、「参照」ボタンを押すとポップアップが出るので、「信頼されたルート証明機関」を選択して、「OK」ボタンを押して、「次へ」ボタンを押します。

これで、証明書ファイルの有効化がはかれました。

万一、証明書を消した。または、消したいといった場合には、ファイルだけでなく、「certmgr.msc」コマンドをWin+Rボタンで出た窓から実行して、処理を行ってください。

Apacheの設定

MAMPで使用しているWebサーバーのApacheにSSLの設定をする作業です。

以下の2つのApacheの設定ファイルを編集します。

  1. httpd.conf : Apacheの主要な設定が記述してあるテキストファイル。
  2. httpd-ssl.conf : ApacheのSSLに関する設定が記述してあるテキストファイル。

「httpd.conf」ファイルの記述を編集

「C> MAMP > conf > apache」ディレクトリにある「httpd.conf」ファイルを任意のエディターで開きます。

以下の箇所を、編集します。(# MAMP virtual hostsの下の行の#のコメントアウトを外します。(551行目あたり))

#
# MAMP virtual hosts
Include "C:\MAMP\conf\apache\extra\httpd-vhosts.conf"

以下の箇所を、編集します。(# Secure (SSL/TLS)の下の行の#のコメントアウトを外し、保存します。(592行目あたり))

# Secure (SSL/TLS) connections
Include "C:\MAMP\conf\apache\extra\httpd-ssl.conf"

「httpd-ssl.conf」ファイルを編集

Apacheに「サーバー証明書」と「サーバーの秘密鍵」を設定してSSLを有効にする作業です。

「C> MAMP > bin > apache > conf > extra」ディレクトリにある「httpd-ssl.conf」ファイルを、「C> MAMP > conf > apache > extra」ディレクトリを作成し、コピーします。

「SSLSessionCache」を変更

今回の環境では大体88行目から。

#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism 
#   to use and second the expiring timeout (in seconds).
#SSLSessionCache         "dbm:/Apache24/logs/ssl_scache"
#SSLSessionCache        "shmcb:/Apache24/logs/ssl_scache(512000)"
SSLSessionCache        "shmcb:c:\mamp\logs\ssl_scache(512000)"
SSLSessionCacheTimeout  300
「DocumentRoot」と「ServerName」を変更

ローカル環境で実際に使用している「ドメイン」とその「ルートディレクトリ」に変更します。(今回の環境では122行目)

<VirtualHost _default_:443>

#   General setup for the virtual host
DocumentRoot "C:\MAMP\htdocs"
ServerName localhost:443
ServerAdmin admin@example.com
ErrorLog "C:\MAMP\logs\error.log"
TransferLog "C:\MAMP\logs\access.log"
「サーバー証明書」のファイルパスを変更

自分で発行した「サーバー証明書」が配置してあるファイルパスに変更します。(今回の環境では135行目)

#   Server Certificate:
#   Point SSLCertificateFile at a PEM encoded certificate.  If
#   the certificate is encrypted, then you will be prompted for a
#   pass phrase.  Note that a kill -HUP will prompt again.  Keep
#   in mind that if you have both an RSA and a DSA certificate you
#   can configure both in parallel (to also allow the use of DSA
#   ciphers, etc.)
#   Some ECC cipher suites (http://www.ietf.org/rfc/rfc4492.txt)
#   require an ECC certificate which can also be configured in
#   parallel.
#SSLCertificateFile "/Apache24/conf/server.crt"
#SSLCertificateFile "/Apache24/conf/server-dsa.crt"
#SSLCertificateFile "/Apache24/conf/server-ecc.crt"
SSLCertificateFile "C:\MAMP\conf\apache\ssl\server.crt"
「サーバーの秘密鍵」のファイルパスを変更

自分で作成した「サーバーの秘密鍵」が配置してあるファイルパスに変更します。(今回の環境では150行目)

#   Server Private Key:
#   If the key is not combined with the certificate, use this
#   directive to point at the key file.  Keep in mind that if
#   you've both a RSA and a DSA private key you can configure
#   both in parallel (to also allow the use of DSA ciphers, etc.)
#   ECC keys, when in use, can also be configured in parallel
#SSLCertificateKeyFile "/Apache24/conf/server.key"
#SSLCertificateKeyFile "/Apache24/conf/server-dsa.key"
#SSLCertificateKeyFile "/Apache24/conf/server-ecc.key"
SSLCertificateKeyFile "C:\MAMP\conf\apache\ssl\server.key"
255行目を変更
# <Directory "/Apache24/cgi-bin">
#     SSLOptions +StdEnvVars
# </Directory>
<Directory "C:\MAMP\cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
290行目を変更
#   Per-Server Logging:
#   The home of a custom SSL log file. Use this when you want a
#   compact non-error SSL logfile on a virtual host basis.
# CustomLog "/Apache24/logs/ssl_request.log" \
CustomLog "c:/mamp/logs/ssl_request.log" \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
hostsを編集

Windowsのどこかにある(多分「/c/Windows/System32/drivers/etc」)hostsに次の文を追記します(自分の環境の場合はこれ)。

127.0.0.1 localhost
127.0.0.1 moyasea

MAMPを再起動

MAMPを再起動します。設定が間違っていなければ、ApacheとMySQLが立ち上がります。

立ち上がらない場合

「/c/MAMP/logs」下の、apache_error.logを見てみてください。ログを確認したところ、次のようなログを吐いています。

[Sat Apr 30 04:24:01.270686 2022] [ssl:warn] [pid 25956:tid 652] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Apr 30 04:24:01.273685 2022] [lbmethod_heartbeat:notice] [pid 25956:tid 652] AH02282: No slotmem from mod_heartmonitor
[Sat Apr 30 04:24:01.488685 2022] [mpm_winnt:notice] [pid 25956:tid 652] AH00455: Apache/2.4.33 (Win64) OpenSSL/1.0.2u mod_fcgid/2.3.9 PHP/8.0.1 configured -- resuming normal operations
[Sat Apr 30 04:24:01.488685 2022] [mpm_winnt:notice] [pid 25956:tid 652] AH00456: Server built: Jul  6 2021 12:22:16
[Sat Apr 30 04:24:01.488685 2022] [core:notice] [pid 25956:tid 652] AH00094: Command line: 'C:\\MAMP\\\\bin\\apache\\bin\\httpd.exe -d C:/MAMP/bin/apache -f C:\\MAMP\\\\conf\\apache\\httpd.conf'
[Sat Apr 30 04:24:01.500687 2022] [mpm_winnt:notice] [pid 25956:tid 652] AH00418: Parent: Created child process 26552

解決策としては、

httpd.confを開き、

# 追記
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

この一文がなければ追記をします。

次に、extra/httpd-ssl.confを開き、

SSLSessionCache "shmcb:c:\mamp\logs\ssl_scache(512000)"

この一文がなければ追記をします。

ファイルを保存し、MAMPを再起動してみてください。どうでしょうか?

これでも駄目なら、自分の知識不足で申し訳ありませんが、お力にはなれません。

自分が詰まったところとしては、各種設定を、bashの書き方(例えば、「/c/MAMP/htdocs」としていたところを、「C:\MAMP\htdocs」としたら解決しました。

MAMPはもともとMac用に開発されたプラットフォームなので、そこら辺で表記がMac用になっているところがあるようです。

直接的な解決に結びついたサイトをご紹介します。

Qiita – MAMPにSSLを設定する

大変助かりました。

最後までお読みいただきありがとうございました。

楽天ブックス
¥3,520 (2022/09/19 08:38時点 | 楽天市場調べ)
\楽天ポイント5倍セール!/
楽天市場
\ポイント5%還元!/
Yahooショッピング

sponsored link

down

コメントする

コメントは日本語で入力してください。(スパム対策)




もやしほーむ

白川秋

白川秋

こんにちは。各種プラットフォームでのWordpress、EC-CUBEの使い方や、PHPプログラミングについて書いています。よろしくお願いいたします。



sponsored link

カテゴリー

表示できるコメントはありません。
2022年4月
 12
3456789
10111213141516
17181920212223
24252627282930