前言
今天公司的官網(wǎng)又過(guò)期了。然后發(fā)現(xiàn)我居然沒(méi)有記錄更換ssl證書的博客,今天就把這個(gè)過(guò)程記錄下來(lái)吧。
申請(qǐng)證書
ssl證書大部分都是要花錢買的,但是也有做免費(fèi)ssl證書的平臺(tái),比如我用的這個(gè):https://www.sslforfree.com/ 今天登陸它發(fā)現(xiàn)我的賬號(hào)居然被注銷了,需要重新注冊(cè)。新登陸進(jìn)去才發(fā)現(xiàn),好像平臺(tái)換了。也好,摸索一邊,記錄一下。
現(xiàn)在收費(fèi)選項(xiàng)變多了,不過(guò)依然有那個(gè)免費(fèi)選項(xiàng),總之就是三個(gè)月有效期、只能設(shè)置一個(gè)域名啥的限制,麻煩點(diǎn),但是不給錢,一路設(shè)置到最后驗(yàn)證就可以了。
驗(yàn)證
平臺(tái)總共給了三種驗(yàn)證方式,還是分別介紹下吧,要不就真的沒(méi)啥可說(shuō)的了。
郵件驗(yàn)證
這可能是最簡(jiǎn)單的驗(yàn)證方式,它根據(jù)你要驗(yàn)證的域名,生成相應(yīng)的郵箱地址,你能收到這個(gè)郵件,進(jìn)行下一步認(rèn)證就行了??上У氖牵覜](méi)有用這個(gè)域名弄郵件,所以這個(gè)我不能用。
DNS驗(yàn)證
這個(gè)也是很方便的,它會(huì)讓你在自己的dns上配置一個(gè)cname的解析,到它的一個(gè)指定的地方,然后它能走通這個(gè)解析,就驗(yàn)證了你的身份。這次我打算用這個(gè)驗(yàn)證。
上傳文件驗(yàn)證
之前因?yàn)橛蛎囊恍﹩?wèn)題,我用的都是這個(gè),它是讓你把一個(gè)指定的文件拷到你要驗(yàn)證的域名的指定路徑下。它能訪問(wèn)通,就通過(guò)了驗(yàn)證。
配置ssl證書
通過(guò)了剛才的驗(yàn)證就可以下載證書文件了,下載默認(rèn)格式的或者nginx格式的都可以。根據(jù)官網(wǎng)的教程,首先把證書文件上傳上去到服務(wù)器,然后解壓縮。在進(jìn)行如下操作:
mv certificate.crt certificate.crt.1
cat certificate.crt.1 ca_bundle.crt >> certificate.crt
然后,在你nginx配置文件的server節(jié)點(diǎn)下添加下面的配置:
listen 443 ssl;
server_name 你的域名;
ssl_certificate /opt/nginx/cert/certificate.crt;
ssl_certificate_key /opt/nginx/cert/private.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
把證書文件考過(guò)去就好了。
備注
啟動(dòng)的時(shí)候可能會(huì)報(bào)個(gè)錯(cuò)誤
nginx: [emerg] cannot load certificate "/opt/nginx/cert/certificate.crt": PEM_read_bio_X509_AUX() failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line)
這是因?yàn)樯厦婧喜⒌腸at命令會(huì)導(dǎo)致兩個(gè)文件合并的連接處沒(méi)有換行,換行了就沒(méi)有了。不過(guò),不處理似乎也不影響其https的功用。