卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

JDK自帶工具keytool生成ssl證書(shū)

JDK 自帶工具keytool 生成ssl 證書(shū)前言:因?yàn)楣卷?xiàng)目客戶(hù)要求使用HTTPS 的方式來(lái)保證數(shù)據(jù)的安全,所以木有辦法研究了下怎么生成ssl 證書(shū)來(lái)使用https 以保證數(shù)據(jù)安全。百度了不少資

JDK 自帶工具keytool 生成ssl 證書(shū)

前言:

因?yàn)楣卷?xiàng)目客戶(hù)要求使用HTTPS 的方式來(lái)保證數(shù)據(jù)的安全,所以木有辦法研究了下怎么生成ssl 證書(shū)來(lái)使用https 以保證數(shù)據(jù)安全。

百度了不少資料,看到JAVA 的JDK 自帶生成SSL 證書(shū)的工具:keytool ,外加看了同事的心得體會(huì),自己總結(jié)了一下具體的使用方法和使用過(guò)程中發(fā)現(xiàn)的問(wèn)題及解決辦法。

1:什么是HTTPS ?

HTTPS 其實(shí)是有兩部分組成:HTTP SSL / TLS,

也就是在HTTP 上又加了一層處理加密信息的模塊,并且會(huì)進(jìn)行身份的驗(yàn)證。 問(wèn)題:

Firebug 和postman 之類(lèi)的瀏覽器調(diào)試工具,為什么獲取到的是明文? 解答:

SSL 是對(duì)傳輸?shù)臄?shù)據(jù)進(jìn)行加密,針對(duì)的是傳輸過(guò)程的安全。 firebug 之類(lèi)的瀏覽器調(diào)試工具,

因?yàn)樗麄兊玫降氖强蛻?hù)端加密之前/解密之后的數(shù)據(jù),因此是明文的。 2:什么是自簽名證書(shū)?

就是自己生成的證書(shū),并不是官方生成的證書(shū)。

除非是很正式的項(xiàng)目,否則使用自己簽發(fā)的證書(shū)即可,因?yàn)楣俜缴勺C書(shū)是要花錢(qián)滴。

3:進(jìn)入正題,使用JDK 自帶工具KeyTool 生成自簽發(fā)證書(shū)! 第一步:為服務(wù)器生成證書(shū)

打開(kāi)CMD 命令行工具,cd 到C 盤(pán)根目錄或者是jdk 的bin 目錄下,如下圖所示:

,

附錄1:常用keytool 命令

,

使用keytool 命令生成證書(shū):

keytool

-genkey

-alias tomcat(別名)

-keypass 123456(別名密碼)

-keyalg RSA(算法)

-keysize 1024(密鑰長(zhǎng)度)

-validity 365(有效期,天單位)

-keystore D:/keys/tomcat.keystore(指定生成證書(shū)的位置和證書(shū)名稱(chēng))

-storepass 123456(獲取keystore 信息的密碼)

方便復(fù)制版:

keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365-keystore D:/keys/tomcat.keystore -storepass 123456

圖例:

回車(chē)執(zhí)行后如下圖:

點(diǎn)擊回車(chē)即可在D:/keys/文件夾內(nèi)生成名為:tomcat.keystore 的文件。

成功后無(wú)提示信息

注意:

①D:/keys/ 目錄需要提前手動(dòng)創(chuàng)建好,否則會(huì)生成失敗

②提示輸入域名的時(shí)候不能輸入IP 地址

問(wèn)題①的錯(cuò)誤信息如下:

,

第二步:為客戶(hù)端生成證書(shū)

為瀏覽器生成證書(shū),以便讓服務(wù)器來(lái)驗(yàn)證它。

為了能將證書(shū)順利導(dǎo)入至IE 和Firefox ,證書(shū)格式應(yīng)該是PKCS12,

因此,使用如下命令生成:

keytool

-genkey

-alias client

-keypass 123456

-keyalg RSA

-storetype PKCS12

-keypass 123456

-storepass 123456

-keystore D:/keys/client.p12

方便復(fù)制版:

keytool -genkey -alias client1 -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore D:/keys/client1.p12 -storepass 123456

圖例:

第二步余下操作步驟同第一步。

第三步:讓服務(wù)器信任客戶(hù)端證書(shū)

1、

由于不能直接將PKCS12格式的證書(shū)庫(kù)導(dǎo)入,

必須先把客戶(hù)端證書(shū)導(dǎo)出為一個(gè)單獨(dú)的CER 文件,使用如下命令:

keytool -export -alias client -keystore D:/keys/client.p12 -storetype PKCS12 -keypass 123456 -file D:/keys/client.cer

注意:

Keypass :指定CER 文件的密碼,但會(huì)被忽略,而要求重新輸入

2、

將該文件導(dǎo)入到服務(wù)器的證書(shū)庫(kù),添加為一個(gè)信任證書(shū):

keytool -import -v -file D:/keys/client.cer -keystore D:/keys/tomcat.keystor

e -storepass 123456

圖例:

,

完成之后通過(guò)list 命令查看服務(wù)器的證書(shū)庫(kù),

可以看到兩個(gè)證書(shū),一個(gè)是服務(wù)器證書(shū),一個(gè)是受信任的客戶(hù)端證書(shū):

keytool -list -v -keystore D:/keys/tomcat.keystore

第四步:讓客戶(hù)端信任服務(wù)器證書(shū)

1、

由于是雙向SSL 認(rèn)證,客戶(hù)端也要驗(yàn)證服務(wù)器證書(shū),

因此,必須把服務(wù)器證書(shū)添加到瀏覽器的“受信任的根證書(shū)頒發(fā)機(jī)構(gòu)”。

由于不能直接將keystore 格式的證書(shū)庫(kù)導(dǎo)入,

必須先把服務(wù)器證書(shū)導(dǎo)出為一個(gè)單獨(dú)的CER 文件,使用如下命令:

keytool -keystore D:/keys/tomcat.keystore -export -alias tomcat6 -file D:/keys/server.cer 2、

雙擊server.cer 文件,按照提示安裝證書(shū),

將證書(shū)填入到“受信任的根證書(shū)頒發(fā)機(jī)構(gòu)”。

填入方法:

打開(kāi)瀏覽器 - 工具 - internet 選項(xiàng)-內(nèi)容- 證書(shū)-把中級(jí)證書(shū)頒發(fā)機(jī)構(gòu)里的www.localhost.com(該名稱(chēng)即時(shí)你前面生成證書(shū)時(shí)填寫(xiě)的名字與姓氏) 證書(shū)導(dǎo)出來(lái)-再把導(dǎo)出來(lái)的證書(shū)導(dǎo)入 受信任的根頒發(fā)機(jī)構(gòu) 就OK 了。

第五步:配置Tomcat 服務(wù)器

protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"

maxThreads="150"

,

scheme="https"

secure="true"

clientAuth="true"

sslProtocol="TLS"

keystoreFile="D:/keys/tomcat.keystore"

keystorePass="123456"

truststoreFile="D:/keys/tomcat.keystore"

truststorePass="123456" />

屬性說(shuō)明:

clientAuth:設(shè)置是否雙向驗(yàn)證,默認(rèn)為false ,設(shè)置為true 代表雙向驗(yàn)證

keystoreFile:服務(wù)器證書(shū)文件路徑

keystorePass:服務(wù)器證書(shū)密碼

truststoreFile:用來(lái)驗(yàn)證客戶(hù)端證書(shū)的根證書(shū),此例中就是服務(wù)器證書(shū)

truststorePass:根證書(shū)密碼

注意:

① 設(shè)置clientAuth 屬性為T(mén)rue 時(shí),需要手動(dòng)導(dǎo)入客戶(hù)端證書(shū)才能訪問(wèn)。

② 要訪問(wèn)https 請(qǐng)求 需要訪問(wèn)8443端口,訪問(wèn)http 請(qǐng)求則訪問(wèn)Tomcat 默認(rèn)端口(你自己設(shè)置的端口,默認(rèn)8080)即可。

總結(jié):

經(jīng)過(guò)以上五步,你使用HTTPS 端口為8443 進(jìn)行訪問(wèn)的時(shí)候 就是經(jīng)過(guò)SSL 信息加密,不怕被截獲了。

通話(huà)的雙方,必須是都擁有證書(shū)的端,才能進(jìn)行會(huì)話(huà),換句話(huà)說(shuō),就是只有安裝了咱證書(shū)的客戶(hù)端,才能與服務(wù)器通信。

小貼士:

強(qiáng)制 https 訪問(wèn)

,

在 tomcat /conf/web.xml 中的 后面加上這 1.

2.

3. CLIENT-CERT

4. Client Cert Users-only Area

5.

6.

7.

8.

9. SSL

10. /*

11.

12.

13. CONFIDENTIAL

14.

15.

完成以上步驟后,在瀏覽器中輸入http 的訪問(wèn)地址也會(huì)自動(dòng)轉(zhuǎn)換為https 了。

附錄1:

keytool 常用命令

-alias 產(chǎn)生別名

-keystore 指定密鑰庫(kù)的名稱(chēng)(就像數(shù)據(jù)庫(kù)一樣的證書(shū)庫(kù),可以有很多個(gè)證書(shū),cacerts 這個(gè)文件是jre 自帶的,

你也可以使用其它文件名字,如果沒(méi)有這個(gè)文件名字,它會(huì)創(chuàng)建這樣一個(gè)) -storepass 指定密鑰庫(kù)的密碼

-keypass 指定別名條目的密碼

-list 顯示密鑰庫(kù)中的證書(shū)信息

-v 顯示密鑰庫(kù)中的證書(shū)詳細(xì)信息

-export 將別名指定的證書(shū)導(dǎo)出到文件

-file 參數(shù)指定導(dǎo)出到文件的文件名

,

-delete 刪除密鑰庫(kù)中某條目

-import 將已簽名數(shù)字證書(shū)導(dǎo)入密鑰庫(kù)

-keypasswd 修改密鑰庫(kù)中指定條目口令

-dname 指定證書(shū)擁有者信息

-keyalg 指定密鑰的算法

-validity 指定創(chuàng)建的證書(shū)有效期多少天

-keysize 指定密鑰長(zhǎng)度

使用說(shuō)明:

導(dǎo)入一個(gè)證書(shū)命令可以如下:

keytool -import -keystore cacerts -storepass 666666 -keypass 888888 -alias alibabacert -file C:alibabajava?rttest_root.cer

其中-keystore cacerts中的cacerts 是jre 中默認(rèn)的證書(shū)庫(kù)名字,也可以使用其它名字 -storepass 666666中的666666是這個(gè)證書(shū)庫(kù)的密碼

-keypass 888888中的888888是這個(gè)特定證書(shū)的密碼

-alias alibabacert中的alibabacert 是你導(dǎo)入證書(shū)的別名,在其它操作命令中就可以使用它 -file C:alibabajava?rttest_root.cer中的文件路徑就是要導(dǎo)入證書(shū)的路徑

瀏覽證書(shū)庫(kù)里面的證書(shū)信息,可以使用如下命令:

keytool -list -v -alias alibabacert -keystore cacerts -storepass 666666

要?jiǎng)h除證書(shū)庫(kù)里面的某個(gè)證書(shū),可以使用如下命令:

keytool -delete -alias alibabacert -keystore cacerts -storepass 666666

要導(dǎo)出證書(shū)庫(kù)里面的某個(gè)證書(shū),可以使用如下命令:

keytool -export -keystore cacerts -storepass 666666 -alias alibabacert -file F:alibabacert_root.cer

要修改某個(gè)證書(shū)的密碼(注意:有些數(shù)字認(rèn)證沒(méi)有私有密碼,只有公匙,這種情況此命令無(wú)效)

這個(gè)是交互式的,在輸入命令后,會(huì)要求你輸入密碼

keytool -keypasswd -alias alibabacert -keystore cacerts

這個(gè)不是交互式的,輸入命令后直接更改

Keytool -keypasswd -alias alibabacert -keypass 888888 -new 123456 -storepass 666666 -keystore cacerts

撰寫(xiě)日期:2016年02月18日

撰寫(xiě)人:張之彬

標(biāo)簽: