将 HTTPS 添加到网站

将 HTTPS 添加到网站

我有一个网站(http://app4u.ml/(位于 Ubuntu 中)并安装了 Tomcat。通过 HTTP,一切正常。我尝试将网站添加到 HTTPS。我从http://www.selfsignedcertificate.com/并将 '.cert' 和 '.key' 放入服务器中,/etc/ssl/localcerts并将 '.crt' 文件放入/usr/share/ca-certificates/mozilla.

然后,我在 Putty 上运行:

openssl req -new -x509 -sha256 -days 365 -nodes -out /etc/ssl/localcerts/app4u.ml.crt -keyout /etc/ssl/localcerts/app4u.ml.key
chmod 600 /etc/ssl/localcerts/app4u.ml*

然后,我在两个文件中添加了/etc/apache2/sites-available以下值:

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/ssl/localcerts/app4u.ml.cert
    SSLCertificateKeyFile /etc/ssl/localcerts/app4u.ml.key
    ServerAdmin [email protected]
    ServerName app4u.ml
    DocumentRoot /var/www/html/public_html/
    ErrorLog /var/www/html/log/error.log
    CustomLog /var/www/html/log/access.log combined
</VirtualHost>

并运行:sudo a2enmod ssl然后service apache2 restart。这使得尝试以 HTTPS 访问网站在 chrome 中抛出警告。如果我尝试继续,我会看到一个空文件夹列表(但如果我尝试以纯 HTTP 访问它,它里面有值)。此外,尝试联系服务器上的 Tomcat 会抛出

javax.net.ssl.SSLHandshakeException:握手失败

我做错了什么?缺少了什么?

编辑2:进一步的问题 - 现在我的 tomcat 可以处理 GET 请求,但不能处理 POST 请求。对于 POST 请求,我得到了javax.net.ssl.SSLHandshakeException: Handshake failed。为什么?

答案1

您需要指示 Apache 将请求转发(代理)到 Tomcat。文档非常完整,但以下内容应该可以为您提供正确的指导(不可能完全为您提供剪切和粘贴指导,因为这取决于您想要什么以及您拥有什么):

运行这个:

a2enmod proxy
a2enmod proxy_http

并将其放入您的配置中:

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/ssl/localcerts/app4u.ml.cert
    SSLCertificateKeyFile /etc/ssl/localcerts/app4u.ml.key
    ServerAdmin [email protected]
    ServerName app4u.ml

    SSLProxyEngine on
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

    ErrorLog /var/www/html/log/error.log
    CustomLog /var/www/html/log/access.log combined
</VirtualHost>

相关内容