【问题标题】:Apache + SpringBoot + SSLApache + SpringBoot + SSL
【发布时间】:2017-07-05 00:58:30
【问题描述】:

我正在尝试使用 SSL 证书在 apache2 上配置我的 Spring Boot 应用程序,但在将其投入生产之前,我无法理解我正在执行的所有步骤是否正确。我需要使用 https 并将所有呼叫从 80 重定向到 443

所以,我的jar应用部署在8080端口,所以我先用这种方式编辑了我的/etc/apache2/sites_available/000-default.conf

<VirtualHost *:80>
       ServerName www.example.com

        ServerAdmin webmaster@localhost


        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ProxyPreserveHost On
        ProxyPass / http://localhost:8080/

</VirtualHost>

当我只需要普通的 http 时,这效果很好

现在我有一个 CA 证书,我将 crt 和密钥放入 /etc/apache2/ssl/certs//etc/apache2/ssl/private/ 并编辑了

default-ssl.conf

这样

<IfModule mod_ssl.c>
        <VirtualHost _default_:443>
                ServerAdmin webmaster@localhost

                DocumentRoot /var/www/html


                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined


                SSLEngine on
                SSLCertificateFile      /etc/ssl/certs/xxxxxxxxxxxx.crt
                SSLCertificateKeyFile /etc/ssl/private/yyyyyyyyyyy.key
                SSLCertificateChainFile /etc/apache2/ssl/certs/sf_bundle-g2-g1.crt

     <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>
    </VirtualHost>
</IfModule>

这样,我应该在 Apache 上启用 SSL,对吗? 现在我需要了解如何将所有呼叫从 80 重定向到 443,以及我遵循的工作流程是否正确

【问题讨论】:

    标签: spring apache ssl https


    【解决方案1】:

    对不起,如果我没有抓住重点,但我不确定您的问题与 Spring Boot 有什么关系。

    Apache“只是”一个 HTTP 服务器。 Spring 应用程序在 Tomcat 或 Wildfly 等应用程序服务器中运行,或者作为带有嵌入式 Tomcat 的独立 JAR 运行。

    我猜你想在Spring应用程序前面使用Apache作为代理,但据我所知,它在SSL方面的配置并没有连接到Spring。

    您的问题的一个可能答案是这样做(如此处所述:http to https apache redirection):

    NameVirtualHost *:80
    <VirtualHost *:80>
      ServerName mysite.example.com
      DocumentRoot /usr/local/apache2/htdocs 
      Redirect permanent / https://mysite.example.com/
    </VirtualHost>
    
    <VirtualHost _default_:443>
      ServerName mysite.example.com
      DocumentRoot /usr/local/apache2/htdocs
      SSLEngine On
    </VirtualHost>
    

    【讨论】:

    • 你说得对,和Spring无关,只是说应用监听8080端口,所以我得先告诉apache做代理,然后重定向到443,对吧?
    • 如果您希望 Apache 充当代理,您可以将其配置为将一个端口(如端口 80)上的所有传入流量转发到您的 Spring 应用程序,该应用程序可以侦听任何端口(默认为 8080) .但是你不能真正告诉 Apache 是一个代理,因为“代理”在这种情况下只是一个描述性术语。 SSL 加密真的又是另一回事了。在端口 80 上拥有 HTTP 流量,在端口 443 上拥有 HTTPS 流量只是一个标准化的约定(对于您公开提供的所有内容,坚持这是一个好主意),但从技术上讲,您可以在您配置的任何端口上拥有 SSL 加密的 HTTPS 流量。跨度>
    猜你喜欢
    • 2017-04-12
    • 2021-06-22
    • 2019-05-27
    • 2021-12-22
    • 2022-10-03
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多