http升级至https

http升级至https

获取证书

升级到https第一步就是获取一张证书。证书是一个二进制文件,包含经过认证的网站公钥和一些元数据,需要自己购买。证书详细介绍

  • 安装certbot

用的是免费的Let’s Encrypt,根据教程选择相应服务器工具和系统版本直接安装。

我用的是Ubuntu16.04+Tomcat9:

$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install certbot 
  • 生成证书:
sudo certbot certonly --webroot -w /opt/tomcat/webapps/flyme -d flyzy2005.cn -d www.flyzy2005.cn

/opt/tomcat/webapps/flyme是你项目的路径,-d(domain)后面接的是域名,多个就填多个。如果有多个项目路径,就接多个-w。

按照提示输入自己的email,再填一些信息就会帮你生成一个证书。

  • 查看证书:
sudo certbot certificates

//output
Found the following certs:
  Certificate Name: flyzy2005.cn
    Domains: flyzy2005.cn www.flyzy2005.cn
    Expiry Date: 2017-08-31 03:54:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/flyzy2005.cn/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/flyzy2005.cn/privkey.pem

更多的重新生成证书、废弃证书、删除证书等可以查看官方API

生成JKS

  • 拷贝副本
sudo cp /etc/letsencrypt/live/flyzy2005.cn/privkey.pem /opt/jks
sudo cp /etc/letsencrypt/live/flyzy2005.cn/fullchain.pem /opt/jks
  • 生成.p12文件
sudo openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out fullchain_and_key.p12 -name tomcat
  • 生成.jks证书
sudo keytool -importkeystore -deststorepass yourJKSpass -destkeypass yourKeyPass -destkeystore MyDSKeyStore.jks -srckeystore fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass yourPKCS12pass -alias tomcat

2个证书一共用到4个密码,可以全部设置一样的,方便配置。

配置tomcat

  • 配置tomcat目录下conf/server.xml
<Connector port="443" protocol="org.apache.coyote.http11.HttpNio11Protocol" 
            URIEncoding="UTF-8" maxThreads="150" SSLEnabled="true" 
            scheme="https" secure="true" clientAuth="false" 
            sslProtocol="TLS" 
            keystoreFile="/opt/jks/MyDSKeyStore.jks" 
            keystorePass="yourJKSpass" 
            keyAlias="tomcat" 
            keyPass="yourKeyPass"/>

keystoreFile可以是/开头的绝对路径,也可以是conf/MyDSKeyStore.jks这样相对路径(最终路径是/opt/tomcat/conf/MyDSKeyStore.jks)

protocol根据你的tomcat版本设置不同的protocol

https的默认端口是443,就像http的默认端口是80
- 让http请求自动转成https
1. 修改conf/server.xml

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
  1. 修改conf/web.xml
<web-app>
    //...
    //...
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Protected Context</web-resource-name>
                <url-pattern>/*</url-pattern>
            </web-resource-collection>
            <!-- auth-constraint goes here if you requre authentication -->
            <user-data-constraint>
                <transport-guarantee>CONFIDENTIAL</transport-guarantee>
            </user-data-constraint>
        </security-constraint>

 </web-app>

https://my.oschina.net/chaon/blog/717902

https://certbot.eff.org/docs/using.html#renewal

https://certbot.eff.org/#ubuntuxenial-other

http://www.ruanyifeng.com/blog/2016/08/migrate-from-http-to-https.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章