🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

Q&A

解決済

1回答

3186閲覧

【Homebrew|ローカル|Apache|SSL|Mkcert|zsh】オレオレ証明書でローカルhttps接続

Rasny

総合スコア21

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

0グッド

0クリップ

投稿2021/01/03 02:40

問題

MacOS(最新BigSur11.1)クリーンインストール状態から、HomebrewでインストールしたApacheを利用し、ローカルのWeb環境を構築しています。
すでにユーザーフォルダ以下にVirtualHost設定し、サブドメインでブラウザ表示できるようにしています。
これを、いわゆるオレオレ証明書でSSL化をしたいのですが、うまくいきません。

/Users/user_name/Sites → http://localhost  ...接続可 (SSL設定するとこっちもエラーになる) → https://localhost  ...接続不可 /Users/user_name/Sites/sample1/ → http://sample1  ...接続可 (SSL設定するとこっちもエラーになる) → https://sample1  ...接続不可 /Users/user_name/Sites/sample2/ → http://sample2  ...接続可 (SSL設定するとこっちもエラーになる) → https://sample2  ...接続不可

OpenSSLは設定が難しく、Mkcertを利用しています。

行ったこと

ターミナル(zsh)で以下のコマンドで、証明書を作りました。

Terminal

1Mkcertインストール 2 3$ brew install mkcert nss 4$ mkcert -install 5 6※Firewfox適用のため(?)nssもインストール 7 どこかの情報の受け売りなので理由はよくわかっていません。 8 9わかりやすい場所に移動 10$ cd /Users/user_name/Desktop 11 12各バーチャルホスト用に証明書を発行(ワイルドカードで複数設定など難しいことはしていません) 13$ mkcert localhost 14$ mkcert sample1 15$ mkcert sample2 16 17できあがった証明書 18localhost.pem 19localhost-key.pem 20sample1.pem 21sample1-key.pem 22sample2.pem 23sample2-key.pem
証明書を、以下にドラッグ&ドロップで移動 (sslフォルダは手動で作成) /usr/local/etc/httpd/ssl/

httpd.confを編集

/usr/local/etc/httpd/httpd.conf 下の行をコメントアウト LoadModule ssl_module lib/httpd/modules/mod_ssl.so Include /usr/local/etc/httpd/extra/httpd-ssl.conf

httpd-ssl.confを編集

/usr/local/etc/httpd/extra/httpd-ssl.conf ポート番号を変更 Listen 8443 → Listen 443 121行目あたりの↓からラストまで、すべてコメントアウト # <VirtualHost _default_:8443> 〜 </VirtualHost>          以下を追記(localhost) <VirtualHost _default_:443> ServerName "localhost" DocumentRoot "/Users/user_name/Sites" SSLEngine on SSLCertificateFile "/usr/local/etc/httpd/ssl/localhost.pem" SSLCertificateKeyFile "/usr/local/etc/httpd/ssl/localhost-key.pem" <Directory "/Users/user_name/Sites"> Options FollowSymLinks AllowOverride all Require all granted </Directory> </VirtualHost> (Sample2も同様) <VirtualHost _default_:443> ServerName "Sample1" DocumentRoot "/Users/user_name/Sites/Sample1" SSLEngine on SSLCertificateFile "/usr/local/etc/httpd/ssl/Sample1.pem" SSLCertificateKeyFile "/usr/local/etc/httpd/ssl/Sample1-key.pem" <Directory "/Users/user_name/Sites/Sample1"> Options FollowSymLinks AllowOverride all Require all granted </Directory> </VirtualHost>

SSLでエラーが出ると、http://〜の接続でもエラーが出るようになります。
httpd.confの下記2行を再びコメントアウトすれば、http://〜では接続できるようになります。

# LoadModule ssl_module lib/httpd/modules/mod_ssl.so # Include /usr/local/etc/httpd/extra/httpd-ssl.conf

以上です。
ミスのご指摘、アドバイスをお願いいたします。

自分はデザイン系であまり詳しくはありません。
Macは最初からApacheが標準インストールされているのですがOSのアップグレードで環境が吹っ飛んでしまったので、クリーンインストールしてHomebrewでhttpdをインストールし、環境を再構築しているところです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2021/01/03 03:22

エラーはどこで出ますか? apache? ブラウザ? エラーメッセージがあれば貼りましょう。 また、ブラウザは何をお使いですか?
Rasny

2021/01/03 05:23

ブラウザはGoogleChromeです。 エラーメッセージは、 -------------- このサイトにアクセスできませんlocalhost で接続が拒否されました。 次をお試しください 接続を確認する プロキシとファイアウォールを確認する ERR_CONNECTION_REFUSED -------------- という内容です。
CHERRY

2021/01/03 10:10

Apache のログにはどのようなメッセージが出ていますか?
Rasny

2021/01/04 02:56

ターミナルで以下のコマンドを打ちました。 % less /usr/local/var/log/httpd/error_log このように出てきました。 AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using USERnoiMac.local. Set the 'ServerName' directive globally to suppress this message [Sat Jan 02 10:43:21.447559 2021] [mpm_prefork:notice] [pid 1953] AH00163: Apache/2.4.46 (Unix) configured -- resuming normal operations [Sat Jan 02 10:43:21.447865 2021] [core:notice] [pid 1953] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd -D FOREGROUND' [Sat Jan 02 10:48:41.388147 2021] [mpm_prefork:notice] [pid 1953] AH00169: caught SIGTERM, shutting down [Sat Jan 02 10:48:42.688674 2021] [mpm_prefork:notice] [pid 2336] AH00163: Apache/2.4.46 (Unix) configured -- resuming normal operations [Sat Jan 02 10:48:42.689024 2021] [core:notice] [pid 2336] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd -D FOREGROUND' [Sat Jan 02 11:05:33.760474 2021] [mpm_prefork:notice] [pid 2336] AH00169: caught SIGTERM, shutting down [Sat Jan 02 11:05:34.873814 2021] [mpm_prefork:notice] [pid 7329] AH00163: Apache/2.4.46 (Unix) configured -- resuming normal operations [Sat Jan 02 11:05:34.874361 2021] [core:notice] [pid 7329] AH00094: Command line: '/usr/local/opt/httpd/bin/httpd -D FOREGROUND' [Sat Jan 02 11:06:13.196403 2021] [mpm_prefork:notice] [pid 7329] AH00169: caught SIGTERM, shutting down [Sat Jan 02 11:07:04.256340 2021] [mpm_prefork:notice] [pid 565] AH00163: Apache/2.4.46 (Unix) configured -- resuming normal operations ServerName がどうの……と記載がありますが、httpd.confには以下の記載をしています。 ServerName localhost:80 また、次のように書き換えてみましたが、ログは同じようになりました。 試行1)ServerName localhost 試行2)ServerName localhost:443
guest

回答1

0

ベストアンサー

brew services で httpd を起動すると、起動には成功したと言うくせに、error になってますね。
/usr/local/var/log/httpd/error_log を見てもエラーの原因は分からないし。

$ brew services start httpd ==> Successfully started `httpd` (label: homebrew.mxcl.httpd) $ brew services Name Status User Plist httpd error hoshi /Users/hoshi/Library/LaunchAgents/homebrew.mxcl.httpd.plist

で、apachectl で起動してみたらエラーメッセージが出ました。

$ apachectl start AH00526: Syntax error on line 92 of /usr/local/etc/httpd/extra/httpd-ssl.conf: SSLSessionCache: 'shmcb' session cache not supported (known names: ). Maybe you need to load the appropriate socache module (mod_socache_shmcb?).

httpd.conf の shmcb を有効にしてやればいいようです。
(修正後は brew services で起動しても大丈夫なはず。)

LoadModule socache_shmcb_module lib/httpd/modules/mod_socache_shmcb.so

参考: https - Apache 2.4 configuration for ssl not working - Stack Overflow

投稿2021/01/04 05:05

hoshi-takanori

総合スコア7899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rasny

2021/01/04 07:40

できましたーーー!! ありがとうございますありがとうございます! ローカルでテストできるの本当に助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問