【问题标题】:How do I rewrite httpd-vhosts.conf to allow SSL connections to a private web-server?如何重写 httpd-vhosts.conf 以允许 SSL 连接到私有 Web 服务器?
【发布时间】:2019-12-21 07:47:59
【问题描述】:

我在运行 Mac OS 10.14.6 的 2012 年中期 Mac mini 上运行 Apache 2.4.34 (Unix),并将这台机器用作个人网络服务器。

当我在 httpd.conf 中取消注释“#Include /private/etc/apache2/extra/httpd-vhosts.conf”时,我的浏览器告诉我它无法连接到服务器,即我的 Mac mini,因为两者都没有“localhost”也不使用域名“www.ocetacea.net”。

我关注了

https://www.ssl.com/how-to/csr-generation-in-macos-keychain-access/

安装我的 SSL 证书和

https://www.ssl.com/how-to/ssl-tls-installation-macos-mojave/#apache

修改httpd.conf和httpd-vhosts.conf。

我的 /private/etc/apache2/extra/httpd-vhosts.conf 目前看起来像:

<VirtualHost *:443>
    DocumentRoot "/Library/WebServer/Documents"
    ServerName ocetacea.net
    SSLEngine on
    SSLCertificateFile "/private/etc/apache2/ocetacea.crt"
    SSLCertificateKeyFile "/private/etc/apache2/ocetacea.key"
    SSLCertificateChainFile "/private/etc/apache2/ocetacea_bundle.crt"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Library/WebServer/Documents"
    ServerName ocetacea.net
    SSLEngine on                                                                                             
    SSLCertificateFile "/private/etc/apache2/ocetacea.crt"                                                   
    SSLCertificateKeyFile "/private/etc/apache2/ocetacea.key"                                                
    SSLCertificateChainFile "/private/etc/apache2/ocetacea_bundle.crt"
</VirtualHost>

sudo apachectl 配置测试

结果:

语法正常

sudo apachectl -k 重启

似乎在做我想做的事,即启动服务器。

我担心的是我没有正确安装 SSL 证书。

/private/etc/apache2/ocetacea.crt

开头

-----开始证书-----

结尾

-----结束证书-----

同时

/private/etc/apache2/ocetacea.key

开头:

-----开始 RSA 私钥--

结尾

-----结束 RSA 私钥-----

/private/etc/apache2/ocetacea_bundle.crt

开头:

-----开始 RSA 私钥--

并以:

结尾

-----结束 RSA 私钥-----

这不是我所期望的——我希望这三个文件之一以类似的开头

-----开始 RSA 公钥--

并以

结尾

-----结束 RSA 公钥----

但这是我第一次尝试设置安全服务器,所以我真的不知道。

任何帮助将不胜感激。

我的 system.log 内容如下:

系统日志重复以下内容:

8 月 14 日 18:40:55 jnorrisMM com.apple.xpc.launchd[1] (org.apache.httpd):服务只运行了 0 秒。将重生时间推迟 10 秒。

8 月 14 日 18:41:06 jnorrisMM com.apple.xpc.launchd[1] (org.apache.httpd[18660]): Service exited with exception code: 1

8 月 14 日 18:41:06 jnorrisMM com.apple.xpc.launchd[1] (org.apache.httpd):服务只运行了 0 秒。将重生时间推迟 10 秒。

8 月 14 日 18:41:16 jnorrisMM com.apple.xpc.launchd[1] (org.apache.httpd[18667]): Service exited with exception code: 1

【问题讨论】:

  • 文件名和扩展名并不重要。它们只是为人类提供便利。但是,顾名思义,ocetacea_bundle.crt 应该是一个证书序列,并且不应该包含任何密钥,无论是私有的还是公共的。询问您购买证书的公司以帮助您并获得正确的捆绑文件。
  • Patrick,我已经确定 >ocetacea_bundle.crt 是捆绑包而不是键,我仍然得到相同的结果。但感谢您让我知道这是个问题。
  • 你说“和 /private/etc/apache2/ocetacea_bundle.crt 以:-----BEGIN RSA PRIVATE KEY-----”开头,我说这是错误的,只是基于假设为方便起见,名为“bundle.crt”的文件应包含证书列表,因此以 -----BEGIN CERTIFICATE----- 开头并以 -----END CERTIFICATE--- 结尾-- 中间没有任何公钥或私钥。
  • “无法连接到服务器”不是很清楚。你有错误信息吗?如果有,是哪一个?而是超时?等等。
  • Safari 只是说“Safari 无法连接到服务器 'localhost'”和“Safari 无法连接到服务器 'www.ocetace.net'”。

标签: macos apache ssl


【解决方案1】:

如果您取消注释此行“#Include /private/etc/apache2/extra/httpd-vhosts.conf”并且您的服务器在端口 80 上工作,那么您不需要端口 80 的第二个 VirtualHost conf,因为它已经在一些文件。此外,您不需要添加 SSL Engine ON 和证书。

清除此问题后,您应该专注于您的证书。您有 2 个证书和 1 个密钥(私有)与您用于保护服务器的 1 个证书相匹配。

此文件 /private/etc/apache2/ocetacea_bundle.crt 是捆绑包,其中可能包含超过 1 个证书而不是密钥。

配置看起来不错,因为语法没问题,你就差不多了。还要确保在外部访问之前在防火墙中打开端口 443。

最好的问候

【讨论】:

  • 我将 完全注释掉了,但我仍然无法连接到 localhost 或 www.ocetacea.net。
猜你喜欢
  • 2020-03-30
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 2022-07-30
  • 2018-08-31
  • 2014-01-17
相关资源
最近更新 更多