背景
因?yàn)閲鴥?nèi)域名不備案, 如果不使用HTTPS訪問網(wǎng)站, 那么會(huì)直接提示溫馨提示:該網(wǎng)站暫時(shí)無法訪問. 而且也正是因?yàn)镠TTP請(qǐng)求會(huì)被攔截, 所以Google Let's Encrypt命令行工具也無法使用, 因?yàn)槠湫枰ㄟ^HTTP請(qǐng)求來完成驗(yàn)證.
手工獲取證書
網(wǎng)站: SSL For Free
- 在輸入框中輸入多個(gè)域名 (使用空格隔開):
api.domain.com class.domain.com www.domain.com - 點(diǎn)擊
Create Free SSL Certificate按鈕 - 選擇驗(yàn)證方式 - Manual Verification (DNS)
- 登錄DNS管理網(wǎng)站, 添加TXT記錄
SSL FOR FREE網(wǎng)站會(huì)叫你手動(dòng)添加5條TXT DNS記錄. 比如說
host為_acme-challenge.api.domain.com, 值為Ak0E7oILRNkxggHPYSQRykZKSF3oyrNq6P7c0HB4rTg. 那么在DNS管理那里添加TXT記錄的時(shí)候在host那里輸入_acme-challenge.api即可. 自己的域名(domain.com)那部分不需要寫進(jìn)去. - 點(diǎn)擊
Download SSL Certificate之前, 先手動(dòng)點(diǎn)擊那幾個(gè)網(wǎng)址驗(yàn)證一下, 因?yàn)镈NS記錄需要一些時(shí)間才能生效. - 點(diǎn)擊
Download SSL Certificate下載證書.
配置
解壓得到三個(gè)文件, 然后在命令行輸入:
echo -e "$(cat certificate.crt)\n$(cat certificate.crt)" > cert_chain.crt
這里要注意\n是必須的, 要保證合并的crt文件的格式如下:
-----BEGIN CERTIFICATE-----
secret
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
secret
-----END CERTIFICATE-----
即不能-----END CERTIFICATE----------BEGIN CERTIFICATE-----在同一行, 否則Nginx會(huì)報(bào)錯(cuò).
Nginx 配置:
ssl_certificate /path/cert_chain.crt;
ssl_certificate_key /path/private.key;
配置好后記得sudo service nginx restart一下.