Tomcat配置使用SSL雙向認證(使用openssl產生認證)

來源:互聯網
上載者:User

原文來自:http://liujy1111.blog.163.com/blog/static/49739712008842372293/

不過我按照上面的步驟做下來,https的服務起不來,總是提示認證檔案不存在或者格式非法。搞了好久終於搞定了,在這裡總結一下。

 

環境資訊:

軟體                            版本                                                   安裝路徑

Tomcat                       apache-tomcat-7.0.11                      D:/tomcat/apache-tomcat-7.0.11

OpenSSL                    OpenSSL 0.9.8k 25 Mar 2009           D:/OpenSSL

JDK                             jdk1.6.0_12                                      D:/Program Files/Java/jdk1.6.0_12

 

 

說明:

我的Openssl使用的是工具包,就是目錄下只有一些exe檔案和.manifest檔案什麼的。根據後面步驟的需要我們還需要做如下工作。

1、從Openssl的帶原始碼的完整包的openssl-x.x.x/apps目錄下拷貝一個Openssl.cnf設定檔放在D:/OpenSSL下

2、在D:/OpenSSL下面建立ca、jks、server、client四個檔案夾。

3、下面步驟中紅色標識的是我曾經遇到的問題,或者跟原文不一樣的地方。

 

 

開始:

一:產生CA認證

 

目前不使用第三方權威機構的CA來認證,自己充當CA的角色。

網上下載一個openssl軟體

1.       建立私密金鑰 :

D:/OpenSSL>openssl genrsa -out ca/ca-key.pem 1024

2.建立認證請求 :

注意:這一步我執行是提示缺少openssl檔案,這就是為什麼我們需要拷貝一個openssl.cnf檔案到這裡的原因。

         當然也可以使用 -config 參數指定一個別的完整路徑或者自己寫一個簡單的設定檔。偶是不會寫啦^_^

D:/OpenSSL>openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem -config openssl.cnf

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:zhejiang

Locality Name (eg, city) []:hangzhou

Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision

Organizational Unit Name (eg, section) []:test

Common Name (eg, YOUR name) []:root

Email Address []:sky

3.自簽署認證 :

D:/OpenSSL>openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

4.將認證匯出成瀏覽器支援的.p12格式 :

D:/OpenSSL>openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

密碼:changeit      

二.產生server認證。

1.建立私密金鑰 :

D:/OpenSSL>openssl genrsa -out server/server-key.pem 1024

2.建立認證請求 :

D:/OpenSSL>openssl req -new -out server/server-req.csr -key server/server-key.pem -config openssl.cnf

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:zhejiang

Locality Name (eg, city) []:hangzhou

Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision

Organizational Unit Name (eg, section) []:test

Common Name (eg, YOUR name) []:localhost
 

注釋:一定要寫伺服器所在的ip

地址 //紅色這裡是本機測試,所以我寫localhost

Email Address []:sky

3.自簽署認證 :

D:/OpenSSL>openssl x509 -req -in
server/server-req.csr -out server/server-cert.pem -signkey
server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem
-CAcreateserial -days 3650

4.將認證匯出成瀏覽器支援的.p12格式 :

D:/OpenSSL>openssl pkcs12 -export
-clcerts -in server/server-cert.pem -inkey server/server-key.pem -out
server/server.p12

密碼:changeit

三.產生client認證。

1.建立私密金鑰 :

D:/OpenSSL>openssl genrsa -out client/client-key.pem 1024

2.建立認證請求 :

D:/OpenSSL>openssl req -new -out client/client-req.csr -key client/client-key.pem -config openssl.cnf

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:zhejiang

Locality Name (eg, city) []:hangzhou

Organization Name (eg, company) [Internet Widgits Pty Ltd]:skyvision

Organizational Unit Name (eg, section) []:test

Common Name (eg, YOUR name) []:sky

Email Address []:sky     

注釋:就是登入中心的使用者(本來使用者名稱應該是Common Name

,但是中山公安的不知道為什麼使用的Email Address

,其他版本沒有測試)

 

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:123456

An optional company name []:tsing

3.自簽署認證 :

D:/OpenSSL>openssl x509 -req -in
client/client-req.csr -out client/client-cert.pem -signkey
client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem
-CAcreateserial -days 3650

4.將認證匯出成瀏覽器支援的.p12格式 :

D:/OpenSSL>openssl pkcs12 -export
-clcerts -in client/client-cert.pem -inkey client/client-key.pem -out
client/client.p12

密碼:changeit

四.根據ca認證產生jks檔案

 

D:/OpenSSL> keytool
-keystore C:/openssl/bin/jks/truststore.jks -keypass 222222 -storepass
222222 -alias ca -import -trustcacerts -file
C:/openssl/bin/ca/ca-cert.pem

五.配置tomcat ssl

修改conf/server.xml。原文是5.5和6.0版本的配置,我用的是7.0,配置如下。

xml 代碼

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="true" sslProtocol="TLS"
               keystoreFile="server.p12
" keystorePass="changeit" keystoreType="PKCS12"
               truststoreFile="truststore.jks
" truststorePass="222222" truststoreType="JKS"
               SSLCertificateFile="../server-cert.pem"
               SSLCertificateKeyFile="../server-key.pem"
/>

      紅色部分的配置原文沒有提到,我在啟動tomcat時總是提示認證不存在或者格式非法,搞了好久=.=!

      後來在協助文檔中看到這兩個配置才找到原因。

      這裡使用到了四個檔案,各個檔案都是在前面的步驟中產生的。四個檔案都是放在tomcat的根目錄下。

      藍色標識的server.p12和truststore.jks這兩個檔案需要放在tomcat的根目錄下。

      紅色的server-cert.pem和server-key.pem預設是放在tomcat的bin檔案夾下的,我放在了根目錄下,所以這裡使用了相對路徑../。

六.匯入認證

將ca.p12,client.p12分別匯入到IE中去(開啟IE->;Internet選項->內容->認證)。

ca.p12匯入至可信任的根憑證授權單位,client.p12匯入至個人

 

七.驗證ssl配置是否正確訪問你的應用http://localhost
:8443/

,如果配置正確的話會出現請求你數位憑證的對話方塊。

 

 

 

 

 

驗證:

 

在我驗證時,我沒有匯入ca.p12和client.p12也能訪問http://localhost:8443,只是提示認證不安全。安裝了以後也沒有變化。是不是沒有對用戶端進行驗證?

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.