【问题标题】:Configure SSL certificate in Angular 8 with Spring boot Application使用 Spring Boot Application 在 Angular 8 中配置 SSL 证书
【发布时间】:2020-07-28 21:10:45
【问题描述】:

我阅读了一些在 Spring Boot 中配置 LetsEncrypt SSL 证书的教程。我们有一个在 Spring Boot 中开发的应用程序。它在嵌入式 tomcat 8080 上运行。我有另一个在默认 4200 端口上运行的 Angular 8 应用程序。两个应用程序都能够在 JwtToken 的帮助下正确地相互通信。现在我希望我的应用程序/域应该启用 ssl。所以我的问题是,我们是否需要两个应用程序的单独 SSL 证书,或者在 Spring Boot 端配置就足够了。

【问题讨论】:

    标签: java spring spring-boot ssl angular8


    【解决方案1】:

    我们需要单独的 SSL 证书吗?

    如果您的 tomcat 服务器和 Angular 应用程序位于同一域(子域)下,您可以使用单一认证来保护它们。

    在spring boot端配置就够了?

    不,重点是保护从 Angular 到 tomcat 服务器的连接,如果您在 Angular 页面上使用 http 并保持显示不安全。

    请随时要求更多说明。

    【讨论】:

    • 谢谢。相同的域意味着,角度应用程序和 spring boot 应该打包/捆绑在一个单一的 war 文件中。对吗?
    • 不,您可以将 my-domain.com:8443 用于 tomcat 和 my-domain:8181 另一个托管 Angular 应用程序。 (Apache,Node.js)我建议您为此检查 IIS ...您可以在启用 SSL 的情况下公开 IIS 上的域,并且 IIS 在没有 SSL 的情况下私​​下将调用重定向到 tomcat/angular,这将是更好的方法我的开口。公开 Tomcat 服务器是不可取的。
    【解决方案2】:

    经过几天的研发,让我发布我的问题本身的答案。

    我们需要单独的 SSL 证书吗? 回答:我们只需要 1 个可以针对我们的域名生成的证书,比如说 someexample.com;未在此答案中解释如何生成 ssl 证书。这个特定的证书应该同时配置 tomcat 和 nginx 服务器。如果您不在 nginx 中提供 ssl 证书路径,那么您将在浏览器网络调用中遇到错误(INVALID_CERT_ERROR) 我在 /etc/letsencrypt/live/ 生成了我的 ssl 证书文件。对你来说可能会有所不同。

    我编辑了 tomcat/config/server.xml 文件

    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
        maxThreads="150" SSLEnabled="true">
          <SSLHostConfig>
            <Certificate hostName="someexample.com" certificateFile="/etc/letsencrypt/live/cert.pem"
                         certificateKeyFile="/etc/letsencrypt/live/privkey.pem"
                         certificateChainFile="/etc/letsencrypt/live/chain.pem" />
          </SSLHostConfig>
        </Connector>
    

    请注意,我们也需要在 nginx 中添加相同的 ssl 证书。编辑 ngix.conf 文件。

    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
    
        #someexample.com
         server {
            listen   443;
            ssl    on;
            ssl_certificate    /etc/letsencrypt/live/someexample.com/cert.pem;
            ssl_certificate_key    /etc/letsencrypt/live/someexample.com/privkey.pem;
            server_name someexample.com;
            location / {
                root   html;
                index  index.html;
            }
            ssl_protocols TLSv1.1 TLSv1.2;
            ssl_prefer_server_ciphers on;
            ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256;
        }
        server {
            listen 80;
            server_name www.someexample.com someexample.com;
            return 301 https://someexample.com;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-07
      • 2020-02-24
      • 2014-11-25
      • 2019-02-24
      • 2019-02-17
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      相关资源
      最近更新 更多