JDK自帶工具keytool生成ssl證書

前言:

因為公司項目客戶要求使用HTTPS的方式來保證數(shù)據(jù)的安全,所以木有辦法研究了下怎么生成ssl證書來使用https以保證數(shù)據(jù)安全。

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


1:什么是HTTPS?

HTTPS其實是有兩部分組成:HTTP?+?SSL?/?TLS聊替,

也就是在HTTP上又加了一層處理加密信息的模塊楼肪,并且會進行身份的驗證。

問題:

Firebug和postman之類的瀏覽器調試工具惹悄,為什么獲取到的是明文春叫?

解答:

SSL是對傳輸?shù)臄?shù)據(jù)進行加密,針對的是傳輸過程的安全。?

firebug之類的瀏覽器調試工具象缀,

因為他們得到的是客戶端加密之前/解密之后的數(shù)據(jù)蔬将,因此是明文的。

2:什么是自簽名證書央星?

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

除非是很正式的項目莉给,否則使用自己簽發(fā)的證書即可毙石,因為官方生成證書是要花錢滴。


3:進入正題颓遏,使用JDK自帶工具KeyTool?生成自簽發(fā)證書徐矩!

第一步:為服務器生成證書

打開CMD命令行工具,cd到C盤根目錄或者是jdk的bin目錄下叁幢,如下圖所示:

使用keytool命令生成證書:

keytool?

-genkey?

-alias?tomcat(別名)?

-keypass?123456(別名密碼)?

-keyalg?RSA(算法)?

-keysize?1024(密鑰長度)?

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

-keystore?D:/keys/tomcat.keystore(指定生成證書的位置和證書名稱)?

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


方便復制版:

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

圖例:

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

點擊回車即可在D:/keys/文件夾內生成名為:tomcat.keystore的文件。

成功后無提示信息

注意:

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

②提示輸入域名的時候不能輸入IP地址


問題①的錯誤信息如下:



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

為瀏覽器生成證書鳞骤,以便讓服務器來驗證它。

為了能將證書順利導入至IE和Firefox黍判,證書格式應該是PKCS12豫尽,

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

keytool?

-genkey?

-alias?client?

-keypass?123456

-keyalg?RSA?

-storetype?PKCS12?

-keypass?123456?

-storepass?123456?

-keystore?D:/keys/client.p12


方便復制版:

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

圖例:

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


第三步:讓服務器信任客戶端證書

1美旧、

由于不能直接將PKCS12格式的證書庫導入,

必須先把客戶端證書導出為一個單獨的CER文件贬墩,使用如下命令:

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

注意:

Keypass:指定CER文件的密碼榴嗅,但會被忽略,而要求重新輸入

2震糖、

將該文件導入到服務器的證書庫录肯,添加為一個信任證書:

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

e?-storepass?123456

圖例:

完成之后通過list命令查看服務器的證書庫,

可以看到兩個證書吊说,一個是服務器證書论咏,一個是受信任的客戶端證書:

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


第四步:讓客戶端信任服務器證書

1、

由于是雙向SSL認證颁井,客戶端也要驗證服務器證書厅贪,

因此,必須把服務器證書添加到瀏覽器的“受信任的根證書頒發(fā)機構”雅宾。

由于不能直接將keystore格式的證書庫導入养涮,

必須先把服務器證書導出為一個單獨的CER文件,使用如下命令:

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

2、

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

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

填入方法:

打開瀏覽器???-?工具??-??internet選項-內容-?證書-把中級證書頒發(fā)機構里的www.localhost.com(該名稱即時你前面生成證書時填寫的名字與姓氏)證書導出來-再把導出來的證書導入??受信任的根頒發(fā)機構??就OK了悄谐。


第五步:配置Tomcat服務器

<Connector? port=”8443”

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”?/>


屬性說明:

clientAuth:設置是否雙向驗證介评,默認為false,設置為true代表雙向驗證

keystoreFile:服務器證書文件路徑

keystorePass:服務器證書密碼

truststoreFile:用來驗證客戶端證書的根證書爬舰,此例中就是服務器證書

truststorePass:根證書密碼


注意:

①?設置clientAuth屬性為True時们陆,需要手動導入客戶端證書才能訪問。

②?要訪問https請求?需要訪問8443端口情屹,訪問http請求則訪問Tomcat默認端口(你自己設置的端口坪仇,默認8080)即可。



總結:

經過以上五步垃你,你使用HTTPS?端口為8443?進行訪問的時候?就是經過SSL信息加密椅文,不怕被截獲了。

通話的雙方蜡镶,必須是都擁有證書的端雾袱,才能進行會話恤筛,換句話說官还,就是只有安裝了咱證書的客戶端,才能與服務器通信毒坛。


小貼士:

強制?https?訪問

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

<login-config>????

<!–?Authorization?setting?for?SSL?–>????

<auth-method>CLIENT-CERT</auth-method>????

<realm-name>Client?Cert?Users-only?Area</realm-name>????

</login-config>????

<security-constraint>????

<!–?Authorization?setting?for?SSL?–>????

<web-resource-collection?>????

<web-resource-name?>SSL</web-resource-name>????

<url-pattern>/*</url-pattern>????

</web-resource-collection>????

<user-data-constraint>????

<transport-guarantee>CONFIDENTIAL</transport-guarantee>????

</user-data-constraint>????

</security-constraint>?


完成以上步驟后望伦,在瀏覽器中輸入http的訪問地址也會自動轉換為https了。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末煎殷,一起剝皮案震驚了整個濱河市屯伞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌豪直,老刑警劉巖劣摇,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異弓乙,居然都是意外死亡末融,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門暇韧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勾习,“玉大人,你說我怎么就攤上這事懈玻∏缮簦” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艺栈。 經常有香客問我英岭,道長,這世上最難降的妖魔是什么湿右? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任巴席,我火速辦了婚禮,結果婚禮上诅需,老公的妹妹穿的比我還像新娘漾唉。我一直安慰自己,他們只是感情好堰塌,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布赵刑。 她就那樣靜靜地躺著,像睡著了一般场刑。 火紅的嫁衣襯著肌膚如雪般此。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天牵现,我揣著相機與錄音铐懊,去河邊找鬼。 笑死瞎疼,一個胖子當著我的面吹牛科乎,可吹牛的內容都是我干的。 我是一名探鬼主播贼急,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼茅茂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了太抓?” 一聲冷哼從身側響起空闲,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎走敌,沒想到半個月后碴倾,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡掉丽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年跌榔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片机打。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡矫户,死狀恐怖,靈堂內的尸體忽然破棺而出残邀,到底是詐尸還是另有隱情皆辽,我是刑警寧澤柑蛇,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站驱闷,受9級特大地震影響耻台,放射性物質發(fā)生泄漏。R本人自食惡果不足惜空另,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一盆耽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扼菠,春花似錦摄杂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至秧饮,卻和暖如春映挂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盗尸。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工柑船, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泼各。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓鞍时,卻偏偏與公主長得像,于是被迫代替她去往敵國和親历恐。 傳聞我的和親對象是個殘疾皇子寸癌,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內容