關於證書的申請這裏就不多說了,阿里雲和騰訊雲都可以申請免費的SSL證書,有效期爲一年,到期可以再申請。網上搜一下,就可以去申請了。
然後關於tomcat配置SSL證書的,網上也很多教程,這裏推薦騰訊雲的官方證書安裝指引點擊跳轉至騰訊雲證書安裝指引
不過現在的需求是多個域名訪問同一個網站,並且多個域名綁定同一IP的。比如我,在騰訊雲有一臺服務器,解析了兩個域名,現在我想讓這兩個域名能同時以https訪問我的網站,可以是訪問同一個項目,也可以是訪問不同的項目。在參照前面的安裝指引完成之後,只能用一個域名訪問,而另一個顯示證書不安全。
接下來言歸正傳。
1、首先將申請好的證書下載解壓。如下圖:
在tomcat文件夾下有兩個文件,一個是密碼,一個是證書,後面我們都需要。
注意: 需要分別給兩個域名申請證書!
2、 編輯tomcat/conf
文件夾下的 server.xml
文件,一共修改兩處,其他地方都不變。首先修改第一個地方。這裏聲明瞭兩個主機(host)
<!-- 第1處 -->
<Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="www.hemingsheng.cn" >
<SSLHostConfig hostName="www.hemingsheng.cn">
<Certificate certificateKeystoreFile="/home/key_https/Tomcat/www.hemingsheng.cn.jks"
certificateKeystorePassword="這裏填txt文件中的密碼" type="RSA"
/>
</SSLHostConfig>
<SSLHostConfig hostName="www.tinger.wang">
<Certificate certificateKeystoreFile="/home/key_https/Tomcat/www.tinger.wang.jks"
certificateKeystorePassword="這裏填另一個txt文件中的密碼" type="RSA" />
</SSLHostConfig>
</Connector>
3、 如果兩個域名訪問同一個項目,按照如下修改
<Host name="www.hemingsheng.cn" appBase="/root/webfile/webapps" unpackWARs="false" autoDeploy="true">
<Alias>www.hemingsheng.cn</Alias>
<Alias>www.tinger.wang</Alias>
<!-- 設置默認項目名稱 -->
<Context path="" docBase="/root/webfile/web" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
這裏的關鍵在於<Alias>www.hemingsheng.cn</Alias>
,將兩個域名主機指向了同一個項目
4、 如果要配置兩個域名訪問不同的項目,則按照如下配置
<!--
這裏我兩個主機配置了相同的項目,這樣修改會實例化兩個web項目,雖然兩個域名可以訪問同一個項目,但是會啓動兩個虛擬機,不推薦。
這個訪問推薦用來配置兩個域名訪問兩個不同的項目
-->
<Host name="www.hemingsheng.cn" appBase="/root/webfile/webapps" unpackWARs="false" autoDeploy="true">
<!-- 設置默認項目名稱 -->
<Context path="" docBase="/root/webfile/web" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="www.tinger.wang" appBase="/root/webfile/webapps" unpackWARs="false" autoDeploy="true">
<!-- 設置默認項目名稱 -->
<Context path="" docBase="/root/webfile/web" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
然後重啓,發現兩個域名都可以用https訪問了。