tomcat配置https相關

服務端證書的生成

一、keytool爲Tomcat生成證書(該方法在瀏覽器提示證書不安全,如果用於寫app的https接口,app 端訪問失敗)

打開mac上的終端,執行命令cd /Library/Java/Home/bin/進入相應目錄下。使用keytool爲Tomcat生成證書,假定目標機器的域名是“localhost”,keystore文件存放在“/Users/用戶名/工作/CA/”目錄下,名稱叫做“tomcat.keystore”,使用“RSA”加密,口令爲“password”,過期時間爲100年,使用如下命令生成:

keytool -genkey -v -alias tomcat -keyalg RSA -keystore /Users/用戶/Desktop/tomcat.keystore -validity 36500

(參數簡要說明:“/Users/用戶/Desktop/tomcat.keystore”是證書文件的保存路徑,證書文件名稱是tomcat.keystore ;“-validity 36500”含義是證書有效期,36500表示100年,默認值是90天 “tomcat”爲自定義證書名稱)。

在命令行填寫必要參數:
A、 輸入keystore密碼:此處需要輸入大於6個字符的字符串。
B、 “您的名字與姓氏是什麼?”這是必填項,並且必須是tomcat部署主機的域名或者IP[如:baidu.com 或者 10.1.25.251](就是你將來要在瀏覽器中輸入的訪問地址),否則瀏覽器會彈出警告窗口,提示用戶證書與所在域不匹配。在本地做開發測試時,應填入“localhost”。
C、 你的組織單位名稱是什麼?”、“您的組織名稱是什麼?”、“您所在城市或區域名稱是什麼?”、“您所在的州或者省份名稱是什麼?”、“該單位的兩字母國家代碼是什麼?”可以按照需要填寫也可以不填寫直接回車,在系統詢問“正確嗎?”時,對照輸入信息,如果符合要求則使用鍵盤輸入字母“y”,否則輸入“n”重新填寫上面的信息。
D、 輸入的主密碼,這項較爲重要,會在tomcat配置文件中使用,建議輸入與keystore的密碼一致,設置其它密碼也可以,完成上述輸入後,直接回車則在你在第二步中定義的位置找到生成的文件。

二、StartCom生成免費的ssl證書

參考教程StartSSL免費SSL證書申請和賬戶註冊完整過程

提示:在“2、填寫CSR”步驟之前需要已經生成了csr證書,如下步驟:(Mac系統)
MAC OS自帶了OpenSSL,所以不用去編譯那一坨跟SHIT一樣的源碼。直接在命令行裏使用OPENSSL就可以。
第一步:打開命令行工具,然後輸入 openssl打開openssl
接着執行:openssl req -new -nodes -keyout server.key -out server.csr當前目錄下將產生兩個文件:server.key 和 server.csr。
在這一命令執行的過程中,系統會要求您填寫如下信息:
Country Name (2 letter code):使用國際標準組織(ISO)國碼格式,填寫2個字母的國家代號。中國請填寫CN。
State or Province Name (full name): 省份,比如填寫Shanghai
Locality Name (eg, city): 城市,比如填寫Shanghai
Organization Name (eg, company): 組織單位,比如填寫公司名的拼音
Organizational Unit Name (eg, section): 比如填寫IT Dept
Common Name (eg, your websites domain name): 行使 SSL 加密的網站地址。請注意這裏並不是單指您的域名,而是直接使用 SSL 的網站名稱 例如:pay.abc.com。 一個網站這裏定義是:abc.com 是一個網站;www.abc.com是另外一個網站; pay.abc.com 又是另外一個網站。 注意:這個服務器域名應該和郵件客戶端軟件設置的SMTP/POP3服務器名稱一致。
Email Address: 郵件地址,可以不填
A challenge password: 可以不填
An optional company name:可以不填

第二步:將csr中內容複製,粘貼到下圖框內,提交
這裏寫圖片描述
然後下載
這裏寫圖片描述

第三步:tomcat添加crt證書
將下載的server.crt和server.key,執行下面命令,導出p12文件

openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name server

將p12文件整成tomcat能使用的keystore:

keytool -importkeystore -srckeystore server.p12 -srcstoretype PKCS12 -destkeystore server.jks

配置tomcat

1、打開Tomcat根目錄下的/conf/server.xml修改如下:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
修改參數=>
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="443" />
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
              maxThreads="150" scheme="https" secure="true"
              clientAuth="false" sslProtocol="TLS"/>
 -->
去掉註釋且修改參數=>
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="證書文件的位置" keystorePass="證書密碼"/>

註釋:兩個參數,分別是證書文件的位置和tomcat的主密碼,在證書文件生成過程中做了設置

<!--
   <Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />
-->
修改參數=>
<Connector port="8009" enableLookups="false" protocol="AJP/1.3" redirectPort="443" />

2、打開/conf/web.xml,在最後添加如下內容進行HTTPS強制訪問:

<login-config>
        <auth-method>CLIENT-CERT</auth-method>
        <realm-name>Client Cert Users-only Area</realm-name>
    </login-config>

    <security-constraint>
        <web-resource-collection >
            <web-resource-name >SSL</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>

        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

在這裏要注意:
1、tomcat6中protocol=”HTTP/1.1”,
tomcat7中protocol=”org.apache.coyote.http11.Http11Protocol”;
2、如果要用Eclipse進行測試,必須修改Eclipse工作目錄(workspace)下Servers文件夾下的tomcat配置文件才能生效,修改tomcat實際目錄下的配置文件是無效的,切記!
3、server.xml文件中非SSL的Connector不能刪除,刪除後tomcat啓動不了,會報超時錯誤,切記!
4、如果只是支持客戶端認證服務端把clientAuth改爲false就可以了。

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