因此,我无法理解这个问题,在互联网上到处寻找,但没有找到任何可行的解决办法。
1.1。我有一个apache服务器作为虚拟主机运行。在最初的情况下,它监听端口80,它与我的域example.com绑定,一切都很好。(使用HTTP://example.com )
1.2。在同一台机器上,我在端口4000上运行一个API。我的前端网站试图从这个api中获取,使用HTTP://example.com:4000/api/调用它。同样,在这里,一切都很好,api加载它应该在页面上的数据。
2.1。现在,我为域配置了SSL。从ZeroSSL获得了一个证书,其中包括我的虚拟主机的apache文件中提供的3个文件/密钥,以及好的,现在是HTTPS://example.com加载了漂亮和安全的文件/密钥,现在从端口443加载,“很明显”。所以基本的SSL配置和证书应该是好的!
2.2。现在问题来了。最初,我的现在安全的页面试图从非安全的HTTP (HTTP://example.com:4000/ api /)加载我的api,这在我的HTTPS页面中肯定不起作用(从安全的角度来看也没有任何意义)。由于我的SSL证书通常对整个域example.com有效,所以我尝试更改GET指向HTTPS://example.com:4000/api/,但此时我在加载页面时得到了一个ERR_SSL_PROTOCOL_ERROR (使用HTTPS://example.com)
我读到了关于使用ReverseProxy,或者为该端口设置另一个虚拟主机,并在该端口中包含ssl的内容,但此时,我的noob-ness阻止了我。此时,我的网站给出了一个错误404 (只有当我将"ProxyPass“行保留在example.com.conf中时,这才是原因)。没有ProxyPass,我仍然和ERR_SSL_PROTOCOL_ERROR在一起。下面是我的apache启用的功能--网站吐露的内容如下:
example.com.conf
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://SERVER_LOCAL_IP:4000
ProxyPassReverse / http://SERVER_LOCAL_IP:4000
SSLEngine on
SSLCertificateFile /var/www/example.com/ssl/certificate.crt
SSLCertificateKeyFile /var/www/example.com/ssl/private.key
SSLCertificateChainFile /var/www/example.com/ssl/ca_bundle.crt
api.conf -- (我在获得ERR_SSL_PROTOCOL_ERROR之后创建了它,但似乎没有改变任何东西)
ServerName example.com
ServerAlias www.example.com
SSLEngine on
SSLCertificateFile /var/www/example.com/ssl/certificate.crt
SSLCertificateKeyFile /var/www/example.com/ssl/private.key
SSLCertificateChainFile /var/www/example.com/ssl/ca_bundle.crt
因此,在这一点上,我几乎被阻塞了,无法将我的api用于SSL。有什么帮助吗?
提前谢谢!
发布于 2022-08-12 19:58:57
我不会说我知道答案。虽然我有几件事你可以试试:
https://serverfault.com/questions/1108075
复制相似问题