keytool(JDK自帶)生成ssl證書

1:什么是HTTPS?

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

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


2:什么是自簽名證書?

就是自己生成的證書,并不是官方生成的證書。

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

3:進(jìn)入正題,使用JDK自帶工具KeyTool?生成自簽發(fā)證書!

第一步:為服務(wù)器生成證書

命令:

keytool

-genkey

-alias?tomcat(別名)

-keypass?123456(別名密碼)

-keyalg?RSA(算法)

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

-validity?3650(有效期,天單位)

-keystore tomcat.keystore(指定生成證書的位置和證書名稱)

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

方便復(fù)制版:

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

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

點(diǎn)擊回車即生成名為:tomcat.keystore的文件。

注意:

What is your first and last name? ?建議填域名


第二步:為客戶端生成證書

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

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

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

keytool

-genkey

-alias?client

-keypass?123456

-keyalg?RSA

-storetype?PKCS12

-keypass?123456

-storepass?123456

-keystore client.p12

方便復(fù)制版:

keytool?-genkey?-alias?client -keypass?123456?-keyalg?RSA?-keysize?1024?-validity?365?-storetype?PKCS12?-keystore client.p12?-storepass?123456

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

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

1、

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

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

keytool?-export?-alias?client?-keystore client.p12?-storetype?PKCS12?-keypass?123456?-file client.cer

注意:

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

2、

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

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

e?-storepass?123456

圖例:

完成之后通過 list參數(shù) 查看服務(wù)器的證書庫(kù),

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

keytool?-list?-v?-keystore tomcat.keystore

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

1、

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

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

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

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

keytool?-keystore tomcat.keystore?-export?-alias?tomcat -file server.cer

2、

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

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

填入方法:

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

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

<Connector port="7443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true" maxThreads="150" scheme="https" chemeecure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="tomcat.keystore" keystorePass="123456" truststoreFile="tomcat.keystore" truststorePass="123456"/>

屬性說明:

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

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

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

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

truststorePass:根證書密碼

注意:

①?設(shè)置clientAuth屬性為True時(shí),需要手動(dòng)導(dǎo)入客戶端證書才能訪問。

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

總結(jié):

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

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

小貼士:

強(qiáng)制 https 訪問

在 tomcat /conf/web.xml 中的 ?<welcome- file-list /> 后面加上這

<login-config>

<!-- Authorization setting for SSL -->

<auth-method>CLIENT-CERT

<realm-name>Client Cert Users-only Area

</login-config>

<security-constraint>

<!-- Authorization setting for SSL -->

<web-resource-collection >

<web-resource-name >SSL

<url-pattern>/*

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL

</user-data-constraint>

</security-constraint>

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



附錄1:

keytool常用命令

-alias???????產(chǎn)生別名

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

你也可以使用其它文件名字,如果沒有這個(gè)文件名字,它會(huì)創(chuàng)建這樣一個(gè))

-storepass???指定密鑰庫(kù)的密碼

-keypass?????指定別名條目的密碼

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

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

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

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

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

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

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

-dname???????指定證書擁有者信息

-keyalg??????指定密鑰的算法

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

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

使用說明:

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

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

其中-keystore?cacerts中的cacerts是jre中默認(rèn)的證書庫(kù)名字,也可以使用其它名字

-storepass?666666中的666666是這個(gè)證書庫(kù)的密碼

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

-alias?alibabacert中的alibabacert是你導(dǎo)入證書的別名,在其它操作命令中就可以使用它

-file?C:\alibabajava\cert\test_root.cer中的文件路徑就是要導(dǎo)入證書的路徑

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

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

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

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

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

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

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

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

keytool?-keypasswd?-alias?alibabacert?-keystore?cacerts

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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評(píng)論 6 537
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,786評(píng)論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評(píng)論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評(píng)論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,964評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,354評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,554評(píng)論 0 289
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,106評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,918評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,093評(píng)論 1 371
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評(píng)論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,342評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評(píng)論 1 289
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,839評(píng)論 3 395
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,107評(píng)論 2 375

推薦閱讀更多精彩內(nèi)容

  • 服務(wù)器https配置 配置https操作說明文檔 1、查看服務(wù)器環(huán)境配置(tomcat和apache合并使用) 2...
    南京楊小兵閱讀 8,892評(píng)論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,802評(píng)論 18 139
  • 最近工作中使用到了一些加密的算法,如: 對(duì)稱加密的DES、3DES、RC4、AES 非對(duì)稱加密算法:RSA,DSA...
    郭之源閱讀 2,169評(píng)論 0 12
  • 一. Keytool創(chuàng)建和導(dǎo)入命令 創(chuàng)建keystore和密鑰對(duì) 為存在的keystore生成證書請(qǐng)求文件CSR ...
    sngths閱讀 6,402評(píng)論 0 1
  • 根證書含義 - 孤舟蓑笠翁,獨(dú)釣寒江雪 - 博客頻道 - CSDN.NET 本文想簡(jiǎn)單談?wù)勀莻€(gè)所謂的...
    拉肚閱讀 2,415評(píng)論 0 1