一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - 利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法

利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法

2020-08-02 12:04不爭 Java教程

雙向認(rèn)證和單向認(rèn)證原理基本差不多,只是除了客戶端需要認(rèn)證服務(wù)端以外,增加了服務(wù)端對客戶端的認(rèn)證,下面這篇文章主要介紹了利用keytools為tomcat 7配置ssl雙向認(rèn)證的方法,需要的朋友可以借鑒,下面來一起看看吧。

SSL簡單介紹

SSL(Secure Sockets Layer 安全套接層)就是一種協(xié)議(規(guī)范),用于保障客戶端和服務(wù)器端通信的安全,以免通信時傳輸?shù)男畔⒈桓`取或者修改。

1.怎樣保障數(shù)據(jù)傳輸安全?

客戶端和服務(wù)器端在進(jìn)行握手(客戶端和服務(wù)器建立連接和交換參數(shù)的過程稱之為握手)時會產(chǎn)生一個“對話密鑰”(session key),用來加密接下來的數(shù)據(jù)傳輸,解密時也是用的這個“對話密鑰”,而這個“對話密鑰”只有客戶端和服務(wù)器端知道。也就是說只要這個“對話密鑰”不被破解,就能保證安全。

 2. 客戶端證書和服務(wù)器端證書

客戶端證書和服務(wù)器端證書用于證明自己的身份,就好比每個人都有一張身份證,這種身份證是唯一的。一般來說,只要有服務(wù)器端的證書就可以了,但是有時需要客戶端提供自己的證書,已證明其身份。

Keytool

Keytool 是一個Java數(shù)據(jù)證書的管理工具 ,Keytool將密鑰(key)和證書(certificates)存在一個稱為keystore的文件中在keystore里,包含兩種數(shù)據(jù):密鑰實(shí)體(Key entity)-密鑰(secret key)或者是私鑰和配對公鑰(采用非對稱加密)可信任的證書實(shí)體(trusted certificate entries)-只包含公鑰。下面就來看看利用keytools為tomcat 7配置ssl雙向認(rèn)證的詳細(xì)過程吧。

第一、證書庫、證書等生成

1、生成服務(wù)器證書庫

?
1
keytool -validity 36500 -genkey -v -alias tomcat_server -keyalg RSA -keystore tomcat_server.keystore -dname "CN=127.0.0.1,OU=,O=,L=,ST=,c=" -storepass 123456 -keypass 123456
  • -validity 36500 有效期,以天為單位
  • CN 這項(xiàng)一定是服務(wù)器的域名或者IP地址
  • OU 組織單位
  • O 組織
  • L 區(qū)域
  • ST 州/省份
  • C 國家

2、客戶端證書

?
1
keytool -validity 36500 -genkeypair -v -alias testclient -keyalg RSA -storetype PKCS12 -keystore testclient.p12 -dname "CN=testclient,OU=,O=,L=,ST=,c=" -storepass 123456

-storetype PKCS12 主要是為了將證書導(dǎo)入IE/firefox 中。

將生成的證書導(dǎo)入IE中。

3、將客戶端證書導(dǎo)入服務(wù)器端證書庫

服務(wù)器端證書不識別 p12格式的證書,需要從客戶端證書導(dǎo)出 CER格式證書,然后將CER格式證書導(dǎo)入到服務(wù)器端證書中。

?
1
keytool -export -alias testclient -keystore testclient.p12 -storetype PKCS12 -storepass 123456 -rfc -file testclient.cer

然后將client.cer 導(dǎo)入到服務(wù)器證書庫(使用下面任意一個命令)

?
1
2
keytool -import -v -file testclient.cer -keystore tomcat_server.keystore -storepass 123456
keytool -import -alias testclient -v -file testclient.cer -keystore tomcat_server.keystore -storepass 123456

注意:這里的別名,如果不加別名,則默認(rèn)別名則是 mykey,所以見到mykey 請不要吃驚。

4、從服務(wù)器證書庫導(dǎo)出服務(wù)器證書

?
1
keytool -export -alias tomcat_server -keystore tomcat_server.keystore -storepass 123456 -rfc -file tomcat_server.cer

該證書可以導(dǎo)入瀏覽器中,讓客戶端信任服務(wù)器證書。不導(dǎo)入也不影響使用,但瀏覽器會不信任服務(wù)器證書,會提示錯誤信息。

5、查看證書庫中的所有證書

?
1
keytool -list -keystore tomcat_server.keystore -storepass 123456

第二、Tomcat 配置

配置 server.xml

?
1
2
3
4
5
6
7
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
 maxThreads="150" scheme="https" secure="true"
 keystoreFile="D:\\dev\\tomcat-https\\note\\tomcat_server.keystore"
 keystorePass="123456"
 truststoreFile="D:\\dev\\tomcat-https\\note\\tomcat_server.keystore"
 truststorePass="123456"
 clientAuth="true" sslProtocol="TLS" />

啟動tomcat 就可以了。

問題

如果啟動時報如下錯誤:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SEVERE: 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:507)
 at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:610)
 at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:429)
 at org.apache.catalina.connector.Connector.initInternal(Connector.java:981)
 at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
 at org.apache.catalina.core.StandardService.initInternal(StandardService.java:559)
 at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
 at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:814)
 at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
 at org.apache.catalina.startup.Catalina.load(Catalina.java:640)
 at org.apache.catalina.startup.Catalina.load(Catalina.java:665)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:601)
 at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:281)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)

則是由于Tomcat中的SSL采用了 APR來實(shí)現(xiàn)的,關(guān)于SSL的實(shí)現(xiàn),Tomcat提供了兩種:JSSE和APR,如果安裝了 APR,則優(yōu)先選擇APR作為實(shí)現(xiàn)。

APR的ssh配置需要通OpenSSH來進(jìn)行配置。這在 server.xml 中有說明:

?
1
2
Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation

那么避免采用 APR呢? 有兩種方法,

1,將 protocol=”HTTP/1.1” 修改為 protocol=”org.apache.coyote.http11.Http11Protocol”

2,在windows 下,可以將 bin 目錄下的 tcnative-1.dll 刪掉。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99爱在线精品视频免费观看9 | 国产在线一区二区视频 | 男人狂躁女人下面的视频免费 | 韩剧消失的眼角膜免费完整版 | 天天做日日做天天添天天欢公交车 | 婷婷在线观看香蕉五月天 | 国产成人啪精品午夜在线播放 | 国内精品免费一区二区三区 | 91综合久久| 欧美精品久久久久久久影视 | 色综合91久久精品中文字幕 | 日本护士撒尿xxxx欧美 | 亚洲天堂在线视频播放 | 性欧美video 性满足久久久久久久久 | 91高清免费国产自产 | 亚洲国产欧美在线人成aaaa20 | 色婷婷婷丁香亚洲综合不卡 | freefron性中国 | 女同性互吃奶乳免费视频 | 99精品99 | 色噜噜国产精品视频一区二区 | 国产精品欧美一区二区 | 国产午夜成人无码免费看 | 91色视| 激情五月姐姐 | 国产精品一级香蕉一区 | 日本在线视频免费看 | 四虎影视在线看 | 十大网站免费货源 | 久久性综合亚洲精品电影网 | 成人免费片 | 性色老女人 | 翁息肉小说老扒 | 免费看日产一区二区三区 | 无码国产成人午夜在线观看不卡 | 久久免费看少妇高潮A片2012 | 911亚洲精品国内自产 | 国产福利在线观看91精品 | 91视频夜色| 亚洲国产欧美在线成人aaaa | 精品久久久噜噜噜久久7 |