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ù)器來(lái)驗(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

圖例:

完成之后通過(guò) 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)出來(lái)-再把導(dǎo)出來(lái)的證書導(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"/>

屬性說(shuō)明:

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

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

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

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

truststorePass:根證書密碼

注意:

①?設(shè)置clientAuth屬性為True時(shí)钾恢,需要手動(dòng)導(dǎo)入客戶端證書才能訪問(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信息加密疹瘦,不怕被截獲了。

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

小貼士:

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

在 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的訪問(wèn)地址也會(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)度

使用說(shuō)明:

導(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)證沒有私有密碼,只有公匙,這種情況此命令無(wú)效)

這個(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)系作者
  • 序言:七十年代末中燥,一起剝皮案震驚了整個(gè)濱河市寇甸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疗涉,老刑警劉巖拿霉,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異博敬,居然都是意外死亡友浸,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門偏窝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)收恢,“玉大人,你說(shuō)我怎么就攤上這事祭往÷滓猓” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵硼补,是天一觀的道長(zhǎng)驮肉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)已骇,這世上最難降的妖魔是什么离钝? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮褪储,結(jié)果婚禮上卵渴,老公的妹妹穿的比我還像新娘。我一直安慰自己鲤竹,他們只是感情好浪读,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般碘橘。 火紅的嫁衣襯著肌膚如雪互订。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天痘拆,我揣著相機(jī)與錄音仰禽,去河邊找鬼。 笑死错负,一個(gè)胖子當(dāng)著我的面吹牛坟瓢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播犹撒,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼粒褒!你這毒婦竟也來(lái)了识颊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤奕坟,失蹤者是張志新(化名)和其女友劉穎祥款,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體月杉,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刃跛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了苛萎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桨昙。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腌歉,靈堂內(nèi)的尸體忽然破棺而出蛙酪,到底是詐尸還是另有隱情,我是刑警寧澤翘盖,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布桂塞,位于F島的核電站,受9級(jí)特大地震影響馍驯,放射性物質(zhì)發(fā)生泄漏阁危。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一汰瘫、第九天 我趴在偏房一處隱蔽的房頂上張望狂打。 院中可真熱鬧,春花似錦吟吝、人聲如沸菱父。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浙宜。三九已至官辽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間粟瞬,已是汗流浹背同仆。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裙品,地道東北人俗批。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像市怎,于是被迫代替她去往敵國(guó)和親岁忘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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

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