HTTP轉(zhuǎn)HTTPS—使用OpenSSL創(chuàng)建自簽名SSL證書以及Tomcat配置SSL證書實(shí)戰(zhàn)

1 背景

對(duì)于api服務(wù)器,我們不能讓訪問者先登錄再進(jìn)行訪問這樣不安全惯疙,也不友好。 http協(xié)議沒有任何的加密以及身份驗(yàn)證的機(jī)制对碌,即時(shí)是token認(rèn)證蒿偎,也非常容易遭遇竊聽诉位、劫持、篡改叁丧,因此會(huì)造成個(gè)人隱私泄露岳瞭,惡意的流量劫持等嚴(yán)重的安全問題寝优。

1.1 https如何保證安全

HTTPS是以安全為目標(biāo)的HTTP通道枫耳,簡(jiǎn)單講是HTTP的安全版。即HTTP下加入SSL層钻心,HTTPS的安全基礎(chǔ)是SSL垄开,因此加密的詳細(xì)內(nèi)容就需要SSL长搀。它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系)璃饱,句法類同http:體系,用于安全的HTTP數(shù)據(jù)傳輸苍柏。https:URL表明它使用了HTTPS试吁,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)楼咳。

1.2 身份認(rèn)證(CA數(shù)字證書)

https協(xié)議中身份認(rèn)證的部分是由數(shù)字證書來完成的烛恤,證書由公鑰缚柏、證書主體碟贾、數(shù)字簽名等內(nèi)容組成,在客戶端發(fā)起SSL請(qǐng)求后粱锐,服務(wù)端會(huì)將數(shù)字證書發(fā)給客戶端怜浅,客戶端會(huì)對(duì)證書進(jìn)行驗(yàn)證蔬崩,并獲取用于秘鑰交換的非對(duì)稱密鑰。
數(shù)字證書有兩個(gè)作用:

1)身份授權(quán)跨琳。確保瀏覽器訪問的網(wǎng)站是經(jīng)過CA驗(yàn)證的可信任的網(wǎng)站脉让。
2)分發(fā)公鑰功炮。每個(gè)數(shù)字證書都包含了注冊(cè)者生成的公鑰。在SSL握手時(shí)會(huì)通過certificate消息傳輸給客戶端滚澜。

申請(qǐng)一個(gè)受信任的數(shù)字證書通常有如下流程:

1)終端實(shí)體(可以是一個(gè)終端硬件或者網(wǎng)站)生成公私鑰和證書請(qǐng)求设捐。
2)RA(證書注冊(cè)及審核機(jī)構(gòu))檢查實(shí)體的合法性塘淑。如果個(gè)人或者小網(wǎng)站朴爬,這一步不是必須的。
3)CA(證書簽發(fā)機(jī)構(gòu))簽發(fā)證書母赵,發(fā)送給申請(qǐng)者。
4)證書更新到repository(負(fù)責(zé)數(shù)字證書及CRL內(nèi)容存儲(chǔ)和分發(fā))师倔,終端后續(xù)從repository更新證書周蹭,查詢證書狀態(tài)等凶朗。

注冊(cè)備案過的域名,可以供我們使用搓萧,申請(qǐng)SSL證書宛畦,需要SSL證書進(jìn)行認(rèn)證次和。SSL證書有很多途徑都可以申請(qǐng),比如國(guó)內(nèi)的阿里云石蔗,騰訊云等都是比較方便的读规,而且還有免費(fèi)的證書可以申請(qǐng)束亏,都是一年的使用時(shí)間阵具。本文中采用的是OpenSLL自簽名創(chuàng)建SLL,畢竟是免費(fèi)的怕敬。

2 OpenSLL下載安裝

2.1 下載OpenSSL

本次安裝是在centos7上安裝东跪,首先下載OpenSSL,如果需要window版本(https://oomake.com/download/openssl)丁恭,我這邊下載了openssl-1.1.1d.tar.gz斋日。

2.2 安裝OpenSSL

由于我是window10系統(tǒng)恶守,使用Xshell遠(yuǎn)程Linux系統(tǒng),需要上傳和下載文件庸毫,命令安裝lrzsz

# yum -y install lrzsz 

安裝完成后岔绸,可以開始使用 rz(上傳)和 sz(下載)指令橡伞。

#rz
上傳完成后即可依次執(zhí)行以下指令安裝了
# tar -xzf openssl-1.1.1d.tar.gz

# cd openssl-1.1.1d

# mkdir /usr/local/openssl

# ./config --prefix=/usr/local/openssl

# make

# make install

這樣就安裝完成了兑徘,接下來一些輔助步驟。

2.3 創(chuàng)建軟連接

# which openssl 
/usr/bin/openssl
為了使用方便藕漱,以及以后版本更新方便崭闲,可以創(chuàng)建軟連接刁俭,如下:
# ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
此步驟可能會(huì)報(bào)異常,我就忽略了侮繁,如果您能明白如孝,歡迎指導(dǎo)5谖1蜃妗涧至!

2.4 執(zhí)行以下命令

# cd /usr/local/openssl

# ldd /usr/local/openssl/bin/openssl
    linux-vdso.so.1 =>  (0x00007fff7b9e5000)
    libssl.so.1.1 => not found
    libcrypto.so.1.1 => not found
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f7faa7aa000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f7faa58e000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f7faa1c1000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f7faa9ae000)
    
安裝OK

2.5 查看版本

# openssl version
OpenSSL 1.0.2k-fips  26 Jan 2017

3 創(chuàng)建自簽名的SSL證書和私鑰

3.1 生成私鑰(key文件)

# -genra    生成RSA私鑰
# -des3 des3算法
# -out server.key 生成的私鑰文件名
# -2048 私鑰長(zhǎng)度

#openssl genrsa -des3 -out server.pass.key 2048
輸入一個(gè)4位以上的密碼南蓬。

3.2 去除私鑰中的密碼

# openssl rsa -in server.pass.key -out server.key

注意:有密碼的私鑰是server.pass.key哑了,沒有密碼的私鑰是server.key
在第3.1步創(chuàng)建私鑰的過程中弱左,由于必須要指定一個(gè)密碼拆火。而這個(gè)密碼會(huì)帶來一個(gè)副作用,那就是在每次Apache啟動(dòng)Web服務(wù)器時(shí)币叹,都會(huì)要求輸入密碼模狭,這顯然非常不方便嚼鹉。所以要?jiǎng)h除私鑰中的密碼。

3.3 生成CSR(證書簽名請(qǐng)求)

# -req 生成證書簽名請(qǐng)求
# -new 新生成
# -key 私鑰文件
# -out 生成的CSR文件
# -subj 生成CSR證書的參數(shù)

openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Shanghai/L=Shanghai/O=cetc/OU=cetc/CN=gitlab.cetc.cn"

subj參數(shù)說明如下:

字段 字段含義 示例
/C= Country 國(guó)家 CN
/ST= State or Province 省 Shanghai
/L= Location or City 城市 Shanghai
/O= Organization 組織或企業(yè) cetc
/OU= Organization Unit 部門 wlst
/CN= Common Name 域名或IP wlst.com

3.4 生成自簽名SSL證書

# -days 證書有效期

#openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

X.509證書包含三個(gè)文件:key,csr线脚,crt酒贬。

  • key是服務(wù)器上的私鑰文件,用于對(duì)發(fā)送給客戶端數(shù)據(jù)的加密,以及對(duì)從客戶端接收到數(shù)據(jù)的解密
  • csr是證書簽名請(qǐng)求文件零如,用于提交給證書頒發(fā)機(jī)構(gòu)(CA)對(duì)證書簽名
  • crt是由證書頒發(fā)機(jī)構(gòu)(CA)簽名后的證書,或者是開發(fā)者自簽名的證書祸憋,包含證書持有人的信息蚯窥,持有的公鑰塞帐,以及簽署者的簽名等信息
    備注:在密碼學(xué)中葵姥,X.509是一個(gè)標(biāo)準(zhǔn),規(guī)范了公開秘鑰認(rèn)證允乐、證書吊銷列表削咆、授權(quán)憑證拨齐、憑證路徑驗(yàn)證算法等奏黑。
在這里插入圖片描述

4 將.key和.crt文件轉(zhuǎn)換成.jks文件

4.1 先使用openssl 工具 將 crt和key格式的證書轉(zhuǎn)還成pfx:

 #openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

其中:server.pfx (轉(zhuǎn)后的pfx)mycert.key,mycert.crt( crt和key格式的證書)

注意:該步驟需要輸入密碼passward馁害,該密碼2與3均需要用到

4.2 查看證書別名

 #keytool -list -v -keystore server.pfx

4.3 在使用jdk自帶的keytool將pfx格式文件轉(zhuǎn)為jks

#keytool -importkeystore -srckeystore  server.pfx -srcstoretype pkcs12 -destkeystore mycert.jks -deststoretype JKS  -alias 1

其中:-alias(設(shè)置別名) mycert.jks(轉(zhuǎn)還后jks) server.pfx(需轉(zhuǎn)還的pfx)

注意:該步驟需要輸入3次密碼碘菜,均采用1中的passward限寞。

5 Tomcat配置SSL證書

此處我的Tomcat安裝在Windows10系統(tǒng)中履植;

在Server中配置:

  • 聲明開啟HTTPS (SSL認(rèn)證)
  • 聲明偵聽443端口(并確保已在防火墻上打開443端口)
  • 復(fù)制已簽名的SSL證書和私鑰到指定位置玫霎,并設(shè)置正確的文件權(quán)限
  • 配置已簽名的SSL證書(mycert.jks)的位置
  • 配置將HTTP請(qǐng)求都重定向到HTTPS

5.1 將證書mycert.jks拷貝到conf文件夾下妈橄。

在這里插入圖片描述

5.2 配置server.xml文件眷蚓,需要修改三個(gè)地方

(1)把


在這里插入圖片描述

改為:


在這里插入圖片描述

其中第一個(gè)80端口是為HTTP(HyperText Transport Protocol)即超文本傳輸協(xié)議開放的,此為上網(wǎng)沖浪使用次數(shù)最多的協(xié)議罢缸,第二個(gè)443端口是SSL的專用端口祖能;
(2)把
在這里插入圖片描述

改為:


在這里插入圖片描述

使用443端口的理由同上养铸;
(3)把
在這里插入圖片描述

改為:
在這里插入圖片描述

首先去掉注釋兔甘,然后certificateKeystoreFile屬性是讓你告訴服務(wù)器需要哪個(gè)SSL證書鳞滨,后面就填復(fù)制過去的那個(gè)jks文件的名字(記得帶上jks后綴)拯啦,然后加上certificateKeystorePassword這個(gè)屬性,后面的屬性值是同第4步中的密碼唁情。(我全局都用一個(gè)密碼甸鸟,免得出錯(cuò))

這就配置完成server.xml啦兵迅。

5.3 啟動(dòng)Tomcat

到bin目錄下,雙擊執(zhí)行startup.bat

6 在瀏覽器中訪問

在瀏覽器中打開https://localhost來訪問刻恭。

在這里插入圖片描述

在Firefox瀏覽器中可以添加Security Exception來忽略HTTPS錯(cuò)誤警告吠各。

Chrome瀏覽器可以嘗試通過導(dǎo)入CA證書的方式來忽略HTTPS錯(cuò)誤警告贾漏。

注意:Chrome瀏覽器可能有導(dǎo)入CA證書后仍然無法訪問的問題藕筋;不同瀏覽器對(duì)自簽名SSL證書的檢查和限制也有所區(qū)別隐圾。

注意

自簽名的SSL證書存在安全隱患,在生產(chǎn)環(huán)境上需要購(gòu)買和使用經(jīng)權(quán)威機(jī)構(gòu)認(rèn)證和辦法的證書蜜笤。

參考文獻(xiàn)
OpenSSL下載安裝
使用OpenSSL生成自簽名SSL證書
自簽名證書生成過程
Tomcat安裝SSL證書

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末把兔,一起剝皮案震驚了整個(gè)濱河市县好,隨后出現(xiàn)的幾起案子暖混,更是在濱河造成了極大的恐慌拣播,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谍倦,死亡現(xiàn)場(chǎng)離奇詭異剂跟,居然都是意外死亡酣藻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來偷崩,“玉大人,你說我怎么就攤上這事衫冻≮顺觯” “怎么了笤喳?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵杀狡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我呜象,道長(zhǎng)膳凝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任董朝,我火速辦了婚禮鸠项,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘子姜。我一直安慰自己祟绊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布哥捕。 她就那樣靜靜地躺著牧抽,像睡著了一般遥赚。 火紅的嫁衣襯著肌膚如雪扬舒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天凫佛,我揣著相機(jī)與錄音讲坎,去河邊找鬼。 笑死愧薛,一個(gè)胖子當(dāng)著我的面吹牛晨炕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毫炉,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瓮栗,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起费奸,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤弥激,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后愿阐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體微服,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年换况,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了职辨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盗蟆。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡戈二,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出喳资,到底是詐尸還是另有隱情觉吭,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布仆邓,位于F島的核電站鲜滩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏节值。R本人自食惡果不足惜徙硅,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搞疗。 院中可真熱鬧嗓蘑,春花似錦、人聲如沸匿乃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幢炸。三九已至泄隔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宛徊,已是汗流浹背佛嬉。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留闸天,地道東北人暖呕。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像号枕,于是被迫代替她去往敵國(guó)和親缰揪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

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

  • HTTPS介紹 超文本傳輸安全協(xié)議(英語:Hypertext Transfer Protocol Secure,縮...
    齊滇大圣閱讀 8,927評(píng)論 8 96
  • 服務(wù)器https配置 配置https操作說明文檔 1钝腺、查看服務(wù)器環(huán)境配置(tomcat和apache合并使用) 2...
    南京楊小兵閱讀 8,838評(píng)論 0 9
  • 本文部分摘錄于 SSL Shopper抛姑,這里提供了大量有價(jià)值的信息。 一艳狐、證書標(biāo)準(zhǔn) 1定硝、X.509這是一種證書標(biāo)準(zhǔn)...
    舌尖上的大胖閱讀 10,596評(píng)論 0 11
  • 這幾天在醫(yī)院參加培訓(xùn)課程,想想未來大概一個(gè)月或者更久都會(huì)在這里毫目,心情很興奮蔬啡,但想著孩子一放學(xué)便鉆進(jìn)托管,便有些內(nèi)疚...
    安喜喜閱讀 235評(píng)論 0 0
  • 我镀虐,千晨初箱蟆!是一只百年難得一遇……呸!千年難得一遇……也不對(duì)刮便,是萬年難得一遇的“天才”少女喵空猜,別的貓妖都是眼睛發(fā)光...
    南柯憶雪閱讀 252評(píng)論 0 1