Menu
WEB应用集成HTTPS(http+ssl)让您能的应用更安全
        HTTPS协议的WEB应用的信息更加安全,同时可降低网站被劫持的风险,HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,HTTPS默认端口是443,而HTTP默认端口为80,本文讲解主流http服务配置使支持HTTPS协议
一 、HTTPS安全证书的获取
  1. 自己生成:有jdk-tool等工具可以自己生成证书,但不被浏览器认可反而会提示不安全问题
  2. 通过免费渠道获取:一般大多数云主机提供商(如阿里云,腾讯云,百度云)都会提供免费证书的生成,但支持的功能和安全性相对较低
  3. 收费证书:通过www认可的证书提供渠道生成收费证书,安全性较高,兼容性较好
二、nginx添加SSL模块使支持https
  • 1. /usr/local/nginx/sbin/nginx -V 查看nginx版本与编译安装了哪些模块
       nginx version: nginx/1.10.3
       built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
       built with OpenSSL 1.0.1e-fips 11 Feb 2013
       TLS SNI support enabled
       configure arguments:
  • 2. 下载nginx 1.10.3, 并且configure
      ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  • 3. 执行make ,千万不要make install 否则会覆盖现有的nginx
  • 4. 关闭nginx
  • 5. copy  ~/download/nginx-1.10.3/objs/nginx 到现有的/usr/local/nginx/sbin/nginx
  • 6. /usr/local/nginx/sbin/nginx -V 查看编译安装的模块
          nginx version: nginx/1.10.3
          built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
          built with OpenSSL 1.0.1e-fips 11 Feb 2013
          TLS SNI support enabled
          configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
  • 7. 修改nginx.conf文件
       server {
           server_name xxx.yyy.com;
           listen 443;
          ssl on;
          ssl_certificate /usr/local/nginx/conf/xxx.com_server.txt; #公钥
          ssl_certificate_key /usr/local/nginx/conf/xxx.com_private.txt; #私钥
           location / {
              # location的一堆配置           
            }
 
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
            root   html;
           }
         }
###########################80端口的处理###############################
      server {
         listen 80;
        server_name  xxx.yyy.com;
        send_timeout 1800;
 
        rewrite ^(.*)$  https://xxx.yyy.com$1 permanent; # 80端口跳转
     }
   注:如果是nginx全新安装只需选择ssl模块配置即可
三、TOMCAT配置SSL使支持HTTPS访问
  • 配置Tomcat证书配置: 打开 Tomcat 配置文件 confserver.xml。取消注释,并添加两个属性 keystoreFile,keystorePass。
              <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="E:/tomcat.keystore" keystorePass="123456" />
             其中,keystoreFile是生成的证书文件地址,keystorePass是密钥库口令。
  • 测试HTTPS:测试链接 https://www.ixiera.com/,观察Tomcat输出日志会发现异常。
           严重: Failed to initialize end point associated with ProtocolHandler ["http-apr-8443"]  
                java.lang.Exception: Connector attribute SSLCertificateFile must be defined when using SSL with APR
                at org.apache.tomcat.util.net.AprEndpoint.bind(AprEndpoint.java:484)  
                at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:566)  
                at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:417)  
                at org.apache.catalina.connector.Connector.initInternal(Connector.java:956)  
                at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)  
                at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)  
 
               解决方法是注释confserver.xml文件中下面一行。
            <!--<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />-->
             重启Tomcat ,这时可以看到浏览器已经可以打开 HTTPS 链接了。
       以上以tomcat,nginx等主流http服务为例介绍了配置HTTPS以及安全证书获取的详细步骤,任何安全协议都不是绝对安全,安全是相对的,配置HTTPS只是增加了应用的安全级别,其他防护任然不可或缺