スポンサーリンク

【2020年3月更新】Apache・Windows・ChromeでSSLを有効化

この記事は約7分で読めます。

こんにちは、soraです!

この記事では

・Windows+Apacheを使ってChromeでSSLを有効にするには?
・一応自分用メモ代わり

となっています。

ネットでいろんな記事見て自己署名証明書を作成したんですが、なかなかChromeでhttpsにならず、、、

なんとか解決できたので、そのメモとして+その他やったことのまとめとして書いています。

 

スポンサーリンク

Windows+Apacheを使ってChromeでSSLを有効にするには?

1.秘密鍵の作成
2.公開鍵の作成
3.subjectnames.txtの作成(重要)
4.証明書の作成
5.httpd.confの変更
6.httpd-ssl.confの変更(私の場合ここで解決)
7.chromeに証明書追加

1.秘密鍵の作成

1.コマンドプロンプトを起動

(Windowsボタンを押してWindowsシステムツールの中にあるか、Windowsボタン+Rでcmdと入力で起動)

 

2.cdコマンドでApacheのbinフォルダに移動

例えば、Cドライブ内のApache24フォルダのbinフォルダに移動したい場合
(入力するのは赤字部分)

c:\~~~>cd ¥
c:\>cd Apache24
c:\Apache24>cd bin
c:\Apache24\bin>

 

3.以下のコマンドを実行

C:\Apache24\bin>openssl.exe genrsa -out ..\conf\server.key 1024

 

2.公開鍵の作成

以下のコマンドで公開鍵を作成します。

C:\Apache24\bin>openssl.exe req -new -key ..\conf\server.key -out ..\conf\server.csr -config ..\conf\openssl.cnf

次の順番で赤字部分を入力していきます。
(たぶんなんでもいいですが私の場合は)

  • Country Name:JP(国)
  • State or Province Name:Tokyo(都道府県)
  • Locality Name:tekitou(市区町村)
  • Organization Name:tekitou(組織)
  • Organizational Unit Name:tekitou(部門)
  • Common Name:localhost(SSLを使うIPアドレスorサイト名)
  • Email Address:空白でok(メールアドレス)
  • A challenge password:空白でok(証明書を破棄する場合のパスワード)
  • An optional company name:空白でok(別の組織名)

 

3.subjectnames.txtの作成(重要)

confフォルダの中にsubjectnames.txtを作成します。一応、テキストの名前はなんでも大丈夫です。

テキストには次を記入します。

subjectAltName = DNS:(ドメイン名), IP:(IPアドレス)

 

ローカル環境の場合、コマンドプロンプトでipconfigを実行して

自分のPCに割り当てられているIPv4のアドレスを確認します。

c:\~~~>ipconfig
Wireless LAN adapter Wi-Fi:

接続固有の DNS サフィックス . . . . .: ~~~~~
IPv6 アドレス . . . . . . . . . . . .: ~~~~~
一時 IPv6 アドレス. . . . . . . . . .: ~~~~~
リンクローカル IPv6 アドレス. . . . .: ~~~~~
IPv4 アドレス . . . . . . . . . . . .: 192.168.~.~ ←←←ここ←←←
サブネット マスク . . . . . . . . . .: ~~~~~
デフォルト ゲートウェイ . . . . . . .: ~~~~~~

 

IPv4アドレスを確認したら、subjectnames.txtに入力

subjectAltName = DNS:localhost, IP:192.168.~.~

 

4.証明書の作成

次のコマンドで証明書を作成します。後ろの-extfile subjectnames.txt重要です。

subjectnames.txtの部分は自分が作成したテキストの名前を指定してください。

C:\Apache24\bin>openssl.exe x509 -in ..\conf\server.csr -out ..\conf\server.crt -req -signkey ..\conf\server.key -days 365 -extfile subjectnames.txt

 

このコマンドでPCに割り当てられたIPアドレスと証明書を照らし合わせて、安全かどうか判断する?らしいです。

もとは「2.公開鍵の作成」で指定したCommon Nameで判断していたけどsubjectnames.txtで指定されたSAN(Subject Alternative Name)が参照されるようになったとかなんとか

 

5.httpd.confの変更

C:\Apache24\conf\httpd.confを編集します。

170行あたり
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#LoadModule ssl_module modules/mod_ssl.so
↓
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so

520行あたり
#Include conf/extra/httpd-ssl.conf
↓
Include conf/extra/httpd-ssl.conf

 

6.httpd-ssl.confの変更(私の場合ここで解決)

私はhttpsにならなかったときのキャッシュが残っていたのか何回変更してもhttpsになりませんでした。

バックアップとってなかったのでApacheを入れ直したりchromeのキャッシュ消したりしたのですがダメでしたね、、、

それ下記の90行あたりのやつをいじったらhttpsになりました。私の場合だけかもしれませんが、参考になれば幸いです。

C:\Apache24\conf\extra\httpd-ssl.confを編集します。

90行あたり--これでhttpsにならなかったときのキャッシュが保存されなくなる?一応ここを変更したら解決した--
SSLSessionCache        
SSLSessionCacheTimeout  
↓
#SSLSessionCache
#SSLSessionCacheTimeout

120行あたり--たぶんいじらなくてもいけるはず--
DocumentRoot "${SRVROOT}/htdocs"
↓
DocumentRoot "C:/Apache24/htdocs"

130行あたりも一応確認
SSLEngine on

7.chromeに証明書を追加

chrome右上の「:」から「設定」→→「セキュリティとプライバシー」

→→「もっと見る」→→「証明書の管理」

すると「証明書」のウインドウが開くと思うので

「信頼されたルート証明機関」に証明書をインポートします。(C:\Apache24\conf\server.crtをインポート)

あとは「次へ」と「はい」を連打で

スポンサーリンク

まとめ

一応自分用メモ代わりなので適当な部分もありますが、ご了承ください。

参考にさせていただいたサイトのURL
http://www.koikikukan.com/archives/2013/12/03-012345.php

オレだよオレオレ認証局で証明書つくる - Qiita
2017.05.08 Chrome58でエラーになる問題追記Webサービスの開発するにあたって、開発検証を行うサーバにもSSL証明書が必要になることが多々ある。限られたメンバーがアクセスするだ…

コメント

タイトルとURLをコピーしました