當(dāng)前位置:首頁 > 芯聞號(hào) > 充電吧
[導(dǎo)讀]一、背景&概念HTTPS:在http(超文本傳輸協(xié)議)基礎(chǔ)上提出的一種安全的http協(xié)議,因此可以稱為安全的超文本傳輸協(xié)議。 http協(xié)議直接放置在TCP協(xié)議之上,而https提出在http

一、背景&概念


HTTPS:在http(超文本傳輸協(xié)議)基礎(chǔ)上提出的一種安全的http協(xié)議,因此可以稱為安全的超文本傳輸協(xié)議。 http協(xié)議直接放置在TCP協(xié)議之上,而https提出在http和TCP中間加上一層加密層。從發(fā)送端看,這一層負(fù)責(zé)把http的內(nèi)容加密后送到下層 的TCP,從接收方看,這一層負(fù)責(zé)將TCP送來的數(shù)據(jù)解密還原成http的內(nèi)容。

SSL(Secure Socket Layer):是Netscape公司設(shè)計(jì)的主要用于WEB的安全傳輸協(xié)議。從名字就可以看出它在https協(xié)議棧中負(fù)責(zé)實(shí)現(xiàn)上面提到的加密層。因此,一個(gè)https協(xié)議棧大致是這樣的:

數(shù)字證書:一種文件的名稱,好比一個(gè)機(jī)構(gòu)或人的簽名,能夠證明這個(gè)機(jī)構(gòu)或人的真實(shí)性。其中包含的信息,用于實(shí)現(xiàn)上述功能。

加密和認(rèn)證:加密是指通信雙方為了防止銘感信息在信道上被第三方竊聽而泄漏,將明文通過加密變成密文,如果第三方無法解密的話,就算他獲得密文也無能為力;認(rèn)證是指通信雙方為了確認(rèn)對(duì)方是值得信任的消息發(fā)送或接受方,而不是使用假身份的非法者,采取的確認(rèn)身份的方式。只有同時(shí)進(jìn)行了加密和認(rèn)證才能保證通信的安全,因此在SSL通信協(xié)議中這兩者都被應(yīng)。早期一般是用對(duì)稱加密算法,現(xiàn)在一般都是不對(duì)稱加密,最常見的算法就是RSA。

消息摘要:這個(gè)技術(shù)主要是為了避免消息被篡改。消息摘要是把一段信息,通過某種算法,得出一串字符串。這個(gè)字符串就是消息的摘要。如果消息被篡改(發(fā)生了變化),那么摘要也一定會(huì)發(fā)生變化(如果2個(gè)不同的消息生成的摘要是一樣的,那么這就叫發(fā)生了碰撞)。

消息摘要的算法主要有MD5和SHA,在證書領(lǐng)域,一般都是用SHA(安全哈希算法)。

數(shù)字證書、加密和認(rèn)證、消息摘要三個(gè)技術(shù)結(jié)合起來,就是在HTTPS中廣泛應(yīng)用的證書(certificate),證書本身攜帶了加密/解密的信息,并且可以標(biāo)識(shí)自己的身份,也自帶消息摘要。

HTTPS認(rèn)證過程:

①?瀏覽器發(fā)送一個(gè)連接請(qǐng)求給安全服務(wù)器。

②?服務(wù)器將自己的證書,以及同證書相關(guān)的信息發(fā)送給客戶瀏覽器。

③?客戶瀏覽器檢查服務(wù)器送過來的證書是否是由自己信賴的 CA 中心所簽發(fā)的。如果是,就繼續(xù)執(zhí)行協(xié)議;如果不是,客戶瀏覽器就給客戶一個(gè)警告消息:警告客戶這個(gè)證書不是可以信賴的,詢問客戶是否需要繼續(xù)。

④?接著客戶瀏覽器比較證書里的消息,例如域名和公鑰,與服務(wù)器剛剛發(fā)送的相關(guān)消息是否一致,如果是一致的,客戶瀏覽器認(rèn)可這個(gè)服務(wù)器的合法身份。

⑤?服務(wù)器要求客戶發(fā)送客戶自己的證書。收到后,服務(wù)器驗(yàn)證客戶的證書,如果沒有通過驗(yàn)證,拒絕連接;如果通過驗(yàn)證,服務(wù)器獲得用戶的公鑰。

⑥?客戶瀏覽器告訴服務(wù)器自己所能夠支持的通訊對(duì)稱密碼方案。

⑦?服務(wù)器從客戶發(fā)送過來的密碼方案中,選擇一種加密程度最高的密碼方案,用客戶的公鑰加過密后通知瀏覽器。

⑧?瀏覽器針對(duì)這個(gè)密碼方案,選擇一個(gè)通話密鑰,接著用服務(wù)器的公鑰加過密后發(fā)送給服務(wù)器。

⑨?服務(wù)器接收到瀏覽器送過來的消息,用自己的私鑰解密,獲得通話密鑰。

⑩?服務(wù)器、瀏覽器接下來的通訊都是用對(duì)稱密碼方案,對(duì)稱密鑰是加過密的。

上面所述的是雙向認(rèn)證 SSL 協(xié)議的具體通訊過程,這種情況要求服務(wù)器和用戶雙方都有證書。單向認(rèn)證 SSL 協(xié)議不需要客戶擁有 CA 證書,具體的過程相對(duì)于上面的步驟,只需將服務(wù)器端驗(yàn)證客戶證書的過程去掉,以及在協(xié)商對(duì)稱密碼方案,對(duì)稱通話密鑰時(shí),服務(wù)器發(fā)送給客戶的是沒有加過密的 (這并不影響 SSL 過程的安全性)密碼方案。這樣,雙方具體的通訊內(nèi)容,就是加過密的數(shù)據(jù),如果有第三方攻擊,獲得的只是加密的數(shù)據(jù),第三方要獲得有用的信息,就需要對(duì)加密 的數(shù)據(jù)進(jìn)行解密,這時(shí)候的安全就依賴于密碼方案的安全。而幸運(yùn)的是,目前所用的密碼方案,只要通訊密鑰長度足夠的長,就足夠的安全。這也是我們強(qiáng)調(diào)要求使用128 位加密通訊的原因。

二、環(huán)境準(zhǔn)備

Oracle Linux Server release 6.5、JDK1.7.0_45、openssl-1.0.2d

三、單向認(rèn)證 3.1?為服務(wù)器生成證書

keytool -genkey -keyalg RSA -dname "cn=127.0.0.1,ou=inspur,o=none,l=shandong,st=jinan,c=cn" -alias server -keypass 111111 -keystore server.keystore -storepass 111111 -validity 3650

注:cn=127.0.0.1配置的是服務(wù)器IP

3.2?生成csr

生成csr文件用于提交CA認(rèn)證生成證書使用。

keytool -certReq -alias server -keystore server.keystore -file ca.csr

3.3?生成cer

這個(gè)ca.cer是為了解決不信任時(shí)要導(dǎo)入的

keytool -export -alias server -keystore server.keystore -file ca.cer -storepass 111111

3.4 tomcat配置ssl

clientAuth="false"代表單向認(rèn)證,配置如下:

<Connector SSLEnabled="true"?clientAuth="false"

??????? maxThreads="150" port="8443"

??????? protocol="org.apache.coyote.http11.Http11Protocol"或者HTTP/1.1

??????? scheme="https" secure="true" sslProtocol="TLS"

??????? keystoreFile="D:/server.keystore" keystorePass="111111"/>

注: Http11Protocol支持HTTP/1.1協(xié)議,是http1.1協(xié)議的ProtocolHandler實(shí)現(xiàn)。

3.5?解決不信任

啟動(dòng)tomcat,輸入?https://127.0.0.1:8443/

這時(shí)提示框顯示:服務(wù)器的證書不受信任。在瀏覽器內(nèi)顯示以下提示:

此服務(wù)器無法證明它是127.0.0.1;您計(jì)算機(jī)的操作系統(tǒng)不信任其安全證書。出現(xiàn)此問題的原因可能是配置有誤或您的連接被攔截了。

選擇“繼續(xù)前往(不安全)”,也能訪問,但是此時(shí)就是以普通的HTTP方式進(jìn)行信息傳輸了。

選擇安裝步驟3.3生成的ca.cer文件,將證書存儲(chǔ)在“受信任的證書頒發(fā)機(jī)構(gòu)”,就可以通過HTTPS正常訪問了。

3.6?解決程序訪問異常

這時(shí)候如果用程序去訪問可能還會(huì)拋?zhàn)C書不信任的異常sun.security.validator.ValidatorException: PKIX path building failed...

需要將生成的證書(ca.cer )?導(dǎo)入到j(luò)dk中

執(zhí)行以下命令:

keytool -import -alias tomcatsso -file "ca.cer" -keystore "D:javajdk1.6.0_11jrelibsecuritycacerts" -storepass changeit

其中changeit是jre默認(rèn)的密碼。

如果拋?No subject alternative names present,請(qǐng)?jiān)谏蒶eystore?注意CN必須要為域名(或機(jī)器名稱)例如?localhost?不能為IP?。

如果拋?No name matching localhost found,表示你生成keystore CN的名稱和你訪問的名稱不一致。

四、雙向認(rèn)證 4.1?目錄建立

Linux環(huán)境下,在home下建立out32dll目錄,在此目錄下建立ca、client、server三個(gè)文件夾。以下命令均在out32dll目錄下執(zhí)行。

4.2?生成CA證書

創(chuàng)建私鑰?:

openssl genrsa -out ca/ca-key.pem 1024

創(chuàng)建證書請(qǐng)求?:

openssl req -new -out ca/ca-req.csr -key ca/ca-key.pem

-----

Country Name (2 letter code) [AU]:cn?
State or Province Name (full name) [Some-State]:beijing
Locality Name (eg, city) []:fengtai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DKY?
Organizational Unit Name (eg, section) []:0953
Common Name (eg, YOUR name) []:CA
Email Address []:20095335@mail.besti.edu.cn

彈出密碼輸入選項(xiàng),Enter默認(rèn)即可

自簽署證書?:

openssl x509 -req -in ca/ca-req.csr -out ca/ca-cert.pem -signkey ca/ca-key.pem -days 3650

將證書導(dǎo)出成瀏覽器支持的.p12格式?:

openssl pkcs12 -export -clcerts -in ca/ca-cert.pem -inkey ca/ca-key.pem -out ca/ca.p12

密碼:111111

4.3?生成Server證書

一.?? 1.創(chuàng)建私鑰?:?
openssl genrsa -out server/server-key.pem 1024?
2.創(chuàng)建證書請(qǐng)求?:?
openssl req -new -out server/server-req.csr -key server/server-key.pem?
-----?
Country Name (2 letter code) [AU]:cn?
State or Province Name (full name) [Some-State]:beijing?
Locality Name (eg, city) []:fengtai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DKY?
Organizational Unit Name (eg, section) []:0953
Common Name (eg, YOUR name) []:222.28.129.224???注意:一定要寫服務(wù)器所在的ip地址?
Email Address []:20095335@mail.besti.edu.cn

彈出密碼輸入選項(xiàng),Enter默認(rèn)即可

3.自簽署證書?:?
openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkey server/server-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650?
4.將證書導(dǎo)出成瀏覽器支持的.p12格式?:?
openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkey server/server-key.pem -out server/server.p12?
密碼:111111

4.4?生成Clinet證書

創(chuàng)建私鑰?:

openssl genrsa -out client/client-key.pem 1024

創(chuàng)建證書請(qǐng)求?:openssl req -new -out client/client-req.csr -key client/client-key.pem

-----

Country Name (2 letter code) [AU]:cn

State or Province Name (full name) [Some-State]:Beijing

Locality Name (eg, city) []:fengtai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:DKY

Organizational Unit Name (eg, section) []:0953

Common Name (eg, YOUR name) []:Client

Email Address []:20095335@mail.besti.edu.cn??????

Please enter the following 'extra' attributes to be sent with your certificate request?
A challenge password []:123456?
An optional company name []:tsing?
3.自簽署證書?:

openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkey client/client-key.pem -CA ca/ca-cert.pem -CAkey ca/ca-key.pem -CAcreateserial -days 3650?
4.將證書導(dǎo)出成瀏覽器支持的.p12格式?:?
openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkey client/client-key.pem -out client/client.p12?
密碼:111111

4.5?根據(jù)CA證書生成jks文件

keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file /home/out32dll/ca/ca-cert.pem

4.6 tomcat配置ssl

tomcat6.0的配置:修改conf/server.xml。?將keystoreFile、truststoreFile的路徑填寫為正確的放置路徑。如下圖:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"

??????????????? maxThreads="150" scheme="https" secure="true"

??????????????? clientAuth="true" sslProtocol="TLS"

??????????????? keystoreFile="server.p12" keystorePass="111111" ?keystoreType="PKCS12"

??????????????? truststoreFile="truststore.jks" truststorePass="222222" truststoreType="JKS"/>

4.7?導(dǎo)入證書

將ca.p12,client.p12分別導(dǎo)入到IE中去(打開IE->Internet選項(xiàng)->內(nèi)容->證書)。?ca.p12導(dǎo)入至?受信任的根證書頒發(fā)機(jī)構(gòu),client.p12導(dǎo)入至個(gè)人。

五、瀏覽器驗(yàn)證

驗(yàn)證ssl配置是否正確訪問你的應(yīng)用https://服務(wù)器ip:8443/,如果配置正確的話,

單向認(rèn)證方式會(huì)直接跳轉(zhuǎn)到地址,并且https顯示綠色。

雙向認(rèn)證方式會(huì)出現(xiàn)請(qǐng)求你數(shù)字證書的對(duì)話框,選擇確定,再跳轉(zhuǎn)到地址,并且https顯示綠色。

六、幫助 6.1 Tomcat—server.xml—Connector屬性

屬性

說明

clientAuth

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

keystoreFile

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

keystorePass

服務(wù)器證書密碼

truststoreFile

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

truststorePass

根證書密碼

?

6.2 keytool

Keytool是一個(gè)Java數(shù)據(jù)證書的管理工具,Keytool將密鑰和證書存在一個(gè)稱為keystore的文件中。常用命令屬性如下:

命令屬性

說明

-genkey

在用戶主目錄中創(chuàng)建一個(gè)默認(rèn)文件".keystore",還會(huì)產(chǎn)生一個(gè)mykey的別名,mykey中包含用戶的公鑰、私鑰和證書

-alias

別名,每個(gè)keystore都關(guān)聯(lián)一個(gè)唯一的alias,通常不區(qū)分大小寫

-keystore

指定密鑰庫的名稱(產(chǎn)生的各類信息將不在.keystore文件中)

-keyalg

指定密鑰的算法(如 RSA? DSA(如果不指定默認(rèn)采用DSA)

-validity

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

-keysize

指定密鑰長度

-storepass

指定密鑰庫的密碼(獲取keystore信息所需的密碼)

-keypass

指定別名條目的密碼(私鑰的密碼)

-dname

指定證書擁有者信息。例如:"CN=名字與姓氏,OU=組織單位名稱,O=組織名稱,L=城市或區(qū)域名稱,ST=省份名稱,C=單位的兩字母國家代碼"

-list

顯示密鑰庫中的證書信息

-v

顯示密鑰庫中的證書詳細(xì)信息

-export

將別名指定的證書導(dǎo)出到文件,例:

keytool ? -export -alias?需要導(dǎo)出的別名 -keystore 指定keystore -file 指定導(dǎo)出的證書位置及證書名稱 -storepass 密碼

-file

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

-delete

刪除密鑰庫中某條目,例:

keytool -delete -alias?指定需刪除的別名 -keystore 指定keystore? -storepass 密碼

-printcert

查看導(dǎo)出的證書信息,例:keytool ? -printcert -file yushan.crt

-keypasswd

修改密鑰庫中指定條目口令,例:

keytool -keypasswd -alias?需修改的別名 -keypass 舊密碼 -new? 新密碼? -storepass keystore密碼? -keystore

-import

將已簽名數(shù)字證書導(dǎo)入密鑰庫,例:

keytool -import -alias?指定導(dǎo)入條目的別名 -keystore 指定keystore -file 需導(dǎo)入的證書


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉