「オレオレサーバ証明書」と「オレオレ認証局」でSSL(3/3)
2023-10-15 記載
概要:Windows10+Apache環境にてlocalhostでSSL通信を行う設定方法
前後の記事:1/3, 2/3
Keyword : https, SSL, Apache, 証明書, openssl, オレオレ証明書, 自己証明書
前回のつづき。
cd C:\pgm\Apache24\conf\ssl_oreore
で作業フォルダから。
★Step10
オレオレサーバの鍵を作成します。
openssl genrsa -out A-oreoreSVR.key -passout pass:oreore
A-oreoreSVR.key というファイルが作業フォルダに作成されます。
c:\pgm\Apache24\conf\ssl_oreore>openssl genrsa -out A-oreoreSVR.key -passout pass:oreore
Generating RSA private key, 2048 bit long modulus (2 primes)
..........................................................+++++
....................................+++++
e is 65537 (0x010001)
★Step11
作業フォルダ内に A-oreoreSVR.cfg というテキストファイルを以下の内容で作成します。
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = C:/pgm/apache24/conf/ssl_oreore
default_days = 3650
default_crl_days = 3650
policy = policy_match
[ policy_match ]
countryName = match
organizationName = supplied
commonName = supplied
[ req ]
distinguished_name = req_svr
x509_extensions = v3_svr
[ req_svr ]
countryName = JP
countryName_default = JP
countryName_min = 2
countryName_max = 2
organizationName = A-oreoreSVR_ORG
organizationName_default = A-oreoreSVR_ORG
commonName = localhost
commonName_max = 64
commonName_default = localhost
[ v3_svr ]
subjectAltName = DNS:localhost
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer
keyUsage = digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth,emailProtection
nsCertType = server
nsComment = "A-oreoreSVR"
※ dir = C:/pgm/apache24/conf/ssl_oreore は環境にあわせて書き換えてください。
★Step12
サーバ用の署名要求を作成します。
openssl req -config A-oreoreSVR.cfg -new -key A-oreoreSVR.key -out A-oreoreSVR.csr -passin pass:oreore
CAのときと同様、—– のあと問うてくるので Enterを3回ほど叩きます。
([ ]内のデフォルト値でokという意味)
A-oreoreSVR.csr というファイルが作業フォルダに作成されます。
C:\pgm\Apache24\conf\ssl_oreore>openssl req -config A-oreoreSVR.cfg -new -key A-oreoreSVR.key -out A-oreoreSVR.csr -passin pass:oreore
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.
-----
JP [JP]:
A-oreoreSVR_ORG [A-oreoreSVR_ORG]:
localhost [localhost]:
★Step13
作業フォルダ内に option.v3 というテキストファイルを以下の内容で作成します。
basicConstraints=CA:FALSE
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
keyUsage= nonRepudiation, digitalSignature, keyEncipherment
subjectAltName=DNS:localhost
★Step14
サーバー用の署名要求に「オレオレ認証局」が署名して「オレオレサーバ証明書」を作成します。
openssl x509 -req -in A-oreoreSVR.csr -CA A-oreore-CA.crt -CAkey A-oreore-CA.key -days 3650 -out A-oreoreSVR.crt -passin pass:oreore -extfile option.v3 -CAcreateserial
A-oreoreSVR.crt というファイルが作業フォルダに作成されます。
C:\pgm\Apache24\conf\ssl_oreore>openssl x509 -req -in A-oreoreSVR.csr -CA A-oreore-CA.crt -CAkey A-oreore-CA.key -days 3650 -out A-oreoreSVR.crt -passin pass:oreore -extfile option.v3 -CAcreateserial
Signature ok
subject=C = JP, O = A-oreoreSVR_ORG, CN = localhost
Getting CA Private Key
A-oreoreSVR.crt をダブルクリックすると「証明書」のダイアログが開きます。
タブ「証明のパス」を開くと、A-oreore-CAの配下にぶらさがって認証されています。

★Step15
サーバの鍵はパスワード解除しておくのがよいみたいです。
openssl rsa -in A-oreore-CA.key -out A-oreore-CA.key -passin pass:oreore
writing RSA key と表示されて A-oreore-CA.key が更新されます。
★Step15
証明書のネタは揃ったので、これらをApacheに使ってもらいます。
Apacheインストールフォルダの配下を編集します。
C:\pgm\Apache24\conf\extra\httpd-ahssl.conf
の142行目あたり。
2023-10-27 追記
10日ほど後にApache Haus版 からApache Lounge版へインストールしなおしました。
そちらでは httpd-ahssl.conf ではなく httpd.conf に追記しています。
Apacheを再々インストール(Apache Lounge版へ)
<VirtualHost _default_:443>
SSLEngine on
ServerName localhost:443
# SSLCertificateFile "${SRVROOT}/conf/ssl/server.crt"
# SSLCertificateKeyFile "${SRVROOT}/conf/ssl/server.key"
SSLCertificateFile "${SRVROOT}/conf/ssl_oreore/A_oreoreSVR.crt"
SSLCertificateKeyFile "${SRVROOT}/conf/ssl_oreore/A_oreoreSVR.key"
DocumentRoot "${SRVROOT}/htdocs"
# DocumentRoot access handled globally in httpd.conf
CustomLog "${SRVROOT}/logs/ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
<Directory "${SRVROOT}/htdocs">
Options Indexes Includes FollowSymLinks
AllowOverride AuthConfig Limit FileInfo
Require all granted
</Directory>
</virtualhost>
4~5行目の2行をコメントにして、6~7行を足しています。
SSLの場合は、/conf/ssl/~ を使わずに /conf/ssl_oreore/~ のを使うように。
設定を有効にするには Apatchサービス の再起動 Restart が必要です。
グリーンランプが無事に点灯すればおなぐさみ。
(私はここで何度もエラーになって、ようやくこのmin型の完成形を得ました)

★Step16
Chrome か Edge で https://localhost/ を開いてみます。
グリーンランプが灯ってもSSLでページが表示されないミスもおおいにありえます。
(私はここでも苦労しました)

なんの警告もつかない鍵マークで、サクっとSSL通信できればめでたし、めでたし。
でも Firefox で開くと。

これは、Chrome・Edge はWindowsの証明書マネージャを参照して「A-oreore-CA.crt は信頼OK」としてるのですが、Firefox は独自に証明書管理をしているから。
Firefoxのバーガーメニュー→設定→(左カラムのメニュー)プライバシーとセキュリティ→
「セキュリティ」のくくりの中の [証明書を表示…(C)] をクリック。

認証局証明書→[インポート…(M)]→項目をチェックして→[ OK ]
作業フォルダで作成した A-oreore-CA.crt を選択します。

これでFirefoxでもクリーンな鍵マークでページが表示されるようになります。
以上で、ApacheのLocalhost SSL化は完了です。
-*-*-
最後に。
本内容はネットから得た情報で私が試行錯誤しているうちにまとまった内容です。
先達の情報のみではサクっと動かせなかったため、仕方なく復数サイトの情報が入り混じった
記事になっています。ですので過不足あろうかと思われます。
理解して整理できればよいのですがその力なく。m(_ _)m