我一直在尝试学习如何在带有 mod_ssl 的 Windows 上通过 apache 2.0 设置 SSL,我确保 mod_ssl.so 文件位于模块目录中,并且配置文件包含在 conf 目录 (httpd-ssl.conf) 中,通过取消注释 mod_ssl.so 的 LoadModule 选项来启用该模块。
我创建了一个自签名证书,并将 crt 文件和密钥文件都放在 conf 目录中。
我的 ssl 配置文件上的信息如下:
<VirtualHost _default_:443>
ServerAdmin [email protected]
DocumentRoot "D:/Dev-Ops/apache/Apache2/htdocs/secure/"
ServerName localhost:443
ServerAlias localhost:443
SSLEngine on
SSLEnable
SSLCertificateFile "D:/Dev-Ops/apache/Apache2/conf/server.cert"
SSLCertificate "D:/Dev-Ops/apache/Apache2/conf/server.key"
</VirtualHost>
我确信我可能在这里做错了什么(我是 Apache 和所有这些事情的新手)。目前我收到一条错误消息:
D:/Dev-Ops/apache/Apache2/conf/httpd-ssl.conf 第 8 行语法错误:命令“SSLEnable”无效,可能是拼写错误或由服务器配置中未包含的模块定义
我的问题是:
我是否必须在计算机上安装 OpenSSL(我已经安装了)才能使 mod_ssl 正常工作?如果是这样,我需要配置什么以确保它们可以相互通信吗?
上述 VirtualHost 配置有什么问题?我该怎么做才能纠正它?
每个版本的 apache 都必须具有特定版本的 mod_ssl 吗?如果是这样,我可以从哪里下载二进制 mod_ssl.so 文件(找到这个小文件真是太麻烦了!或者是我找错了地方!),如果它必须具有特定版本的 mod_ssl,那么 Apache 2.0 的最佳版本是什么?
是什么导致了我上面提到的错误?(我确保我的文件位于正确的位置,所有配置指令都已启用,等等)。
请您能否推荐一个好的地方/书籍/链接,让我开始进一步了解 Apache 网络服务器及其在生产环境中的各种应用程序?
有人能尽快帮助我吗?非常感谢您的帮助。
更新
我删除了虚拟主机,如下所示:
<VirtualHost _default_:443>
DocumentRoot "D:/Dev-Ops/apache/Apache2/htdocs/secure/"
SSLCertificateFile "D:/Dev-Ops/apache/Apache2/conf/server.cert"
SSLCACertificatePath "D:/Dev-Ops/apache/Apache2/conf/"
</VirtualHost>
浏览器上显示以下错误:
当我尝试使用以下配置指令进行相同操作时(启用 SSLEngine)
<VirtualHost _default_:443>
DocumentRoot "D:/Dev-Ops/apache/Apache2/htdocs/secure/"
SSLEngine on
SSLCertificateFile "D:/Dev-Ops/apache/Apache2/conf/server.cert"
SSLCACertificatePath "D:/Dev-Ops/apache/Apache2/conf/"
</VirtualHost>
我在 error.log 文件中收到以下错误:
[error] Init: SSLPassPhraseDialog builtin is not supported on Win32 (key file D:/Dev-Ops/apache/Apache2/conf/server.cert)
我已经做了大量研究,研究如何删除密码短语并重新生成证书,用新生成的证书替换现有证书;但是,这似乎对我不起作用!我开始怀疑问题是否出在我的 mod-ssl 版本上(我如何/在哪里可以找到它是否与我的 apache 版本兼容!如果不兼容,我在哪里可以获取 .so 文件来解决问题!)
请有人向我解释一下吗?并帮助我解决这个问题!
答案1
我是否必须在计算机上安装 OpenSSL(我已经安装了)才能使 mod_ssl 正常工作?如果是这样,我需要配置什么以确保它们可以相互通信吗?
取决于你如何安装它。你应该使用以 结尾的 MSI -win32-x86-openssl
,它应该有你需要的一切。
上述 VirtualHost 配置有什么问题?我该怎么做才能纠正它?
删除SSLEnable
,它不是一个有效的指令。
每个版本的 apache 都必须具有特定版本的 mod_ssl 吗?如果是这样,我可以从哪里下载二进制 mod_ssl.so 文件(找到这个小文件真是太麻烦了!或者是我找错了地方!),如果它必须具有特定版本的 mod_ssl,那么 Apache 2.0 的最佳版本是什么?
查看第一个问题的答案,听起来您需要从正确的 MSI 安装;该.so
文件不包含获得正常工作的 SSL 设置所需的全部内容。
是什么导致了我上面提到的错误?(我确保我的文件位于正确的位置,所有配置指令都已启用,等等)。
参见第二个问题的答案。
请您能否推荐一个好的地方/书籍/链接,让我开始进一步了解 Apache 网络服务器及其在生产环境中的各种应用程序?
文档是一个很好的起点,可以深入挖掘阿帕奇2这里是一个很好的资源,互联网上有大量的操作方法文档。
答案2
你应该读一下mod_ssl 文档。您会发现那里没有指令SSLEnable
。