Golang啟用Https服務(wù)器測(cè)試

關(guān)于HTTPS的基礎(chǔ)知識(shí)可以參考加密基礎(chǔ)知識(shí)三 TLS/SSL HTTPS流强,先搞出來(lái)本地簽名的證書(shū)啊粱胜,參考
如何用Golang在本地開(kāi)啟Https服務(wù),首先用XCA
創(chuàng)建了證書(shū)并導(dǎo)出娃承,很遺憾,失敗了,我也沒(méi)搞清原因蟆盐,不過(guò)還是把過(guò)程記錄下來(lái)吧……

一、失敗的XCA創(chuàng)建過(guò)程

用XCA(X Certificate and key management)可視化程序管理SSL 證書(shū)(1)--安裝XCA
用XCA(X Certificate and key management)可視化程序管理SSL 證書(shū)(2)--生成SSL證書(shū)請(qǐng)求
用XCA(X Certificate and key management)可視化程序管理SSL 證書(shū)(3)--創(chuàng)建自定義的憑證管理中心(Certificate Authority)
用XCA(X Certificate and key management)可視化程序管理SSL 證書(shū)(4)--用自定義的憑證管理中心(Certificate Authority)

1.去https://www.hohnstaedt.de/xca/下載后遭殉,安裝

2.如果是第一次打開(kāi)石挂,請(qǐng)點(diǎn)擊 File-->New Database,去存儲(chǔ)證書(shū)

3.選擇證書(shū)數(shù)據(jù)存儲(chǔ)的位置并命名存儲(chǔ)文件的名字险污。

4.設(shè)置密碼保護(hù)證書(shū)數(shù)據(jù)痹愚,比如123456

5.鼠標(biāo)點(diǎn)擊到“Certificate Signing Request” 分頁(yè),并點(diǎn)擊右邊的“New Request”

6.source來(lái)源頁(yè)簽保持不變蛔糯,用默認(rèn)的模板即可拯腮。點(diǎn)擊subject主體標(biāo)簽,輸入證書(shū)的信息蚁飒,比如內(nèi)部名动壤,組織名,組織單元名字淮逻,國(guó)家名琼懊,省份以及通用名字。一般內(nèi)部名和通用名字填一樣爬早,而且通用名一般都需要填寫(xiě)肩碟,因?yàn)檫@個(gè)是用來(lái)標(biāo)示當(dāng)前證書(shū)在你的組織內(nèi)部的唯一性;一般組織名和組織單元名一般和你的公司和部門(mén)相吻合凸椿,比如削祈,你屬于ibm的信息部(IT部門(mén)),那么你的組織名(organizationName)可以填寫(xiě)成:ibm脑漫,你的organizationUnitName可以填寫(xiě)成it髓抑,通用名(common name)和內(nèi)部 名字取決你證書(shū)的用途,主要用來(lái)描述你證書(shū)的功能和用途的优幸。我的這個(gè)例子中吨拍,只是我測(cè)試用的,所以我寫(xiě)成henrytest网杆。


image.png

7.生成保護(hù)證書(shū)的秘鑰:因?yàn)槲覀兪巧勺C書(shū)請(qǐng)求羹饰,那么我們需要生成一個(gè)證書(shū)對(duì)伊滋,即私鑰和共鑰,上面步驟六生成的信息是在公鑰中可以看到的队秩,
(1) 如果這個(gè)證書(shū)將來(lái)會(huì)用到公網(wǎng)的服務(wù)器上去笑旺,那么這個(gè)證書(shū)請(qǐng)求需要發(fā)送到第三方得到權(quán)威機(jī)構(gòu)(Certificate Authentication)進(jìn)行簽名,就好比我們需要把我們的戶口本拿到當(dāng)?shù)毓簿秩マk身份證一樣馍资,你可以拿這個(gè)身份證去買(mǎi)火車(chē)票筒主,去辦銀行卡,第三方的機(jī)構(gòu)承認(rèn)鸟蟹,因?yàn)槭枪簿洲k的乌妙,是大家都承認(rèn)的第三方權(quán)威機(jī)構(gòu)辦的,這時(shí)的公安局就相當(dāng)于我們SSL證書(shū)的頒發(fā)機(jī)構(gòu)建钥,當(dāng)前業(yè)界比較權(quán)威就是Thawte藤韵,Verisign公司等;

(2) 如果這個(gè)證書(shū)只是企業(yè)或者組織內(nèi)部使用熊经,一般用自己組織內(nèi)部或者個(gè)人認(rèn)可的證書(shū)中心去簽名即可荠察,我們會(huì)在下一個(gè)章節(jié)提到如何進(jìn)行自簽名,這就好比你那著你的勞動(dòng)合同去公司申請(qǐng)工牌一樣奈搜,你這個(gè)工牌只能在你組織或者公司內(nèi)部使用悉盆,你不能拿你的工牌去做火車(chē),道理一樣的馋吗。

那么私鑰是做什么的呢焕盟?私鑰就是用來(lái)保護(hù)信息用的,因?yàn)槲覀円话惆压€告訴別人宏粤,讓別人用我們的公鑰去加密數(shù)據(jù)脚翘,然后不告訴別人我們的私鑰,這樣別人用我們的公鑰加密的數(shù)據(jù)绍哎,只有我們自己能解密開(kāi)来农,因?yàn)槟J(rèn)情況下,私鑰只有我們自己知道崇堰;所以這個(gè)私鑰一定要保護(hù)好沃于,而且必須有密碼器保護(hù),這就是為什么我們?cè)诓襟E四需要設(shè)置密碼的原因了海诲。

點(diǎn)擊生成新密鑰


image.png

8.在Subject主體標(biāo)簽繁莹,點(diǎn)擊右下方OK,私鑰和證書(shū)請(qǐng)求就都創(chuàng)建好了特幔。


image.png

9.查看證書(shū)信息


image.png

10.查看私鑰基本信息


image.png

11.選擇Certificates 證書(shū)頁(yè)簽咨演,點(diǎn)擊新建證書(shū),先不要點(diǎn)OK


image.png

切換到主體頁(yè)簽蚯斯,這里和之前步驟一樣薄风,填寫(xiě)證書(shū)信息饵较,創(chuàng)建私鑰


image.png

切換到擴(kuò)展頁(yè)簽注意,Type一定要選擇為“Certificate Authority”遭赂,這樣創(chuàng)建的此證書(shū)才能真正算是憑證管理中心的證書(shū)類(lèi)型循诉。同時(shí),在這個(gè)頁(yè)面也允許我們?cè)O(shè)置此證書(shū)的有效期限嵌牺,默認(rèn)情況下是以當(dāng)前的時(shí)間為起點(diǎn)打洼,在Time Range(時(shí)間范圍)里面填上你希望的證書(shū)有效期限龄糊,默認(rèn)單位為Year(年)逆粹,你也可以根據(jù)你的需要設(shè)置成months(月),日(Days),在當(dāng)前的例子中炫惩,我設(shè)置成10年僻弹。一定要點(diǎn)擊后面的“Apply”*(應(yīng)用)按鈕,否則填入的數(shù)字不生效他嚷。
image.png

其他的標(biāo)簽頁(yè)面配置保持不變蹋绽,然后點(diǎn)擊OK 按鈕,自己的定義的憑證管理中心(Certificate Authority)就創(chuàng)建成功了步咪。


image.png

12.點(diǎn)擊“Certificate Signing Requests”標(biāo)簽頁(yè)面中袋倔,選擇你需要進(jìn)行簽名的證書(shū)請(qǐng)求
image.png

目前是未處理狀態(tài)敞掘,這表示此證書(shū)還未被簽名。選擇需要簽名的證書(shū)蚣抗,并點(diǎn)擊右鍵,在彈出的菜單中瓮下,選擇“Sign”簽發(fā)
image.png

13.把證書(shū)導(dǎo)出后翰铡,然后參考Google Chrome安裝證書(shū)的方法,把證書(shū)安裝到瀏覽器

image.png

14.使用以下程序來(lái)測(cè)試,失敗了……

package main

import (
    "fmt"
    "net/http"
)

func hello(w http.ResponseWriter, r *http.Request) {
    fmt.Println(r.Proto) //打印http協(xié)議版本
    if _, err := w.Write([]byte("<h1>hello world,tom!</h1>")); err != nil {
        fmt.Println(err.Error())
    }
}

func main() {
    http.HandleFunc("/hello", hello)
    if err := http.ListenAndServeTLS(":8080", "./server.pem", "./server.key", nil); err != nil {
        fmt.Println(err.Error())
    }
}
二讽坏、使用OpenSSL來(lái)創(chuàng)建

這次參考看完這篇文章后還不會(huì)windows下生成自簽名https安全證書(shū)的話锭魔,你就打死我表弟,在https://slproweb.com/products/Win32OpenSSL.html下載了win64版本

image.png

解壓到了d:tool 目錄下 然后進(jìn)入OpenSSL-Win64的bin目錄路呜,雙擊openssl.exe進(jìn)入命令行界面迷捧,輸入下面命令

openssl genrsa -des3 -out server.key 2048

生成key文件,這里提示需要輸入密碼胀葱,直接輸入123456就好了党涕,ps:網(wǎng)上好多都是1024強(qiáng)度加密的,因?yàn)椴┛捅容^古老了巡社,現(xiàn)在加密可以使用2048了
接下來(lái)就要使用key文件生成csr文件了
正常的CA認(rèn)證我不了解膛堤,但是知道很貴,但是我這個(gè)因?yàn)槭亲约汗緝?nèi)網(wǎng)供內(nèi)部使用的晌该,所以使用了自簽名
接著上面的命令行輸入

openssl req -new -key server.key -out server.csr

這里會(huì)讓你輸入幾個(gè)參數(shù)肥荔,參數(shù)說(shuō)明

Country Name (2 letter code) [AU]:CN #國(guó)家
State or Province Name (full name) [Some-State]:Beijing #省
Locality Name (eg, city) []:Beijing #市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ncda #公司
Organizational Unit Name (eg, section) []:IT #部門(mén)
Common Name (e.g. server FQDN or YOUR name) []:localhost #域名 這里需要輸入服務(wù)器的域名
Email Address []:kong.weisheng@nidec.com #郵箱

然后還要輸入兩個(gè)密碼 這里輸入123456就好 好記而且反正一會(huì)要?jiǎng)h除

刪除密碼绿渣,如果不刪除的話每次啟動(dòng)服務(wù)器都會(huì)讓你輸入密碼,還是刪了好燕耿,嗯中符,刪了好

openssl rsa -in server.key -out server_no_passwd.key

這里需要輸入之前的密碼 我的是:123456

這時(shí)候,bin目錄下應(yīng)該多了server.key誉帅、server.csr淀散、server_no_passwd.key 這三個(gè)文件了

接下來(lái)要生成自簽名文件了,命令行繼續(xù)輸入

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

這樣蚜锨,crt證書(shū)就生成好了档插,參照上文,安裝到瀏覽器亚再,拿Go代碼再跑一次郭膛,又失敗了……

三、在linux下跑openssl命令

這次是參考了一個(gè)視頻【Golang-GIN】使用openssl生成證書(shū)并配置https http2.0,博主提供了命令:

openssl genrsa -out ./server.key 2048
openssl req -new -x509 -key ./server.key -out ./server.pem -days 365

我試了氛悬,還是不行则剃。仔細(xì)觀察一下,人家是在linux下跑的命令如捅。
參考Win10搭建Linux子系統(tǒng)棍现,在linux下重新生成證書(shū),終于OK了>登病己肮!

image.png

這里如果瀏覽器提示不安全,點(diǎn)繼續(xù)即可
image.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烈涮,一起剝皮案震驚了整個(gè)濱河市朴肺,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坚洽,老刑警劉巖戈稿,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異讶舰,居然都是意外死亡鞍盗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)跳昼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)般甲,“玉大人,你說(shuō)我怎么就攤上這事鹅颊》蟠妫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵堪伍,是天一觀的道長(zhǎng)锚烦。 經(jīng)常有香客問(wèn)我觅闽,道長(zhǎng),這世上最難降的妖魔是什么涮俄? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任蛉拙,我火速辦了婚禮,結(jié)果婚禮上彻亲,老公的妹妹穿的比我還像新娘孕锄。我一直安慰自己,他們只是感情好苞尝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布畸肆。 她就那樣靜靜地躺著,像睡著了一般野来。 火紅的嫁衣襯著肌膚如雪恼除。 梳的紋絲不亂的頭發(fā)上踪旷,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天曼氛,我揣著相機(jī)與錄音,去河邊找鬼令野。 笑死舀患,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的气破。 我是一名探鬼主播聊浅,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼现使!你這毒婦竟也來(lái)了低匙?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碳锈,失蹤者是張志新(化名)和其女友劉穎顽冶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體售碳,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡强重,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贸人。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片间景。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖艺智,靈堂內(nèi)的尸體忽然破棺而出倘要,到底是詐尸還是另有隱情,我是刑警寧澤十拣,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布封拧,位于F島的核電站召嘶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏哮缺。R本人自食惡果不足惜弄跌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望尝苇。 院中可真熱鬧铛只,春花似錦、人聲如沸糠溜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)非竿。三九已至蜕着,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間红柱,已是汗流浹背承匣。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锤悄,地道東北人韧骗。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像零聚,于是被迫代替她去往敵國(guó)和親袍暴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

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