如何免費申請域名證書

本文給大家帶來一篇實用的免費申請域名證書的方法,操作也比較簡單。對於想要搭建https網站的個人或企業來說,非常實用。

當然,首先是得擁有一個域名。如何申請和解析域名可以參考各大雲商服務,不在此贅述了。

本文假定讀者已經購買了域名,也已配置好域名解析。

申請證書非常容易,按照碼哥給的如下步驟照做即可:

建立必要目錄

首先在/var/www/目錄下建立challenges目錄。

當然,需要注意nginx的執行用戶有訪問該目錄的權限。

修改nginx配置

隨後,我們要暫時修改一下nginx的配置,增加一個server配置,如下:

<code>server {
listen 80;
server_name *.netascii.com;
location /.well-known/acme-challenge/ alias /var/www/challenges/;
try_files $uri =404;
}
location / {
return 307 https://$host$request_uri;
}
}/<code>

如果你原本有個80的server配置,也可以只把location的部分加入到你的server配置上。

你的域名

部分配置好,reload新配置即可。

修改申請腳本

這裡,碼哥給出一個python3的腳本,用來向Lets申請證書,證書有效期1個月,所以腳本可以設置為crontab,按月調度。每個月最多可以執行25次(沒記錯的話)。腳本如下:

<code># -*- coding: utf-8 -*-
import subprocess
def letsencrypt(domain):
account_key = '/etc/nginx/certs/www/'+domain + '.akey'
domain_key = '/etc/nginx/certs/www/'+domain + '.key'
domain_csr = '/etc/nginx/certs/www/'+domain + '.csr'
signed_crt = '/etc/nginx/certs/www/signed.crt'
final_crt = '/etc/nginx/certs/www/'+domain + '.crt'
subprocess.getstatusoutput(
'openssl genrsa 4096 > {} && openssl genrsa 4096 > {}'.format(
account_key, domain_key
)
)
subprocess.getstatusoutput(
'openssl req -new -sha256 -key {} -subj \\'/CN={}\\' > {}'.format(
domain_key, domain, domain_csr
)
)
_, output = subprocess.getstatusoutput(
'/usr/bin/python3 -m acme_tiny '
'--account-key {} --csr {} '
'--acme-dir "/var/www/challenges/" > {}'.format(
account_key, domain_csr, signed_crt
)
)
print(output)
subprocess.getstatusoutput(
'wget -O - https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > /etc/nginx/certs/www/intermediate.pem'
)
subprocess.getstatusoutput('cat {} intermediate.pem > {}'.format(signed_crt, final_crt))
def run_job(domain):
letsencrypt(domain)
if __name__ == '__main__':
run_job('你的域名')/<code>

這裡需要說明一下,域名證書存放的位置,筆者是存放在/etc/nginx/下自建的certs目錄裡,由於網站分前後臺,所以前臺的會再建個子目錄叫www,所以就有了/etc/nginx/certs/www/這樣的東東。所以這個路徑大家可以因人而異自行修改。

你的域名部分配置好(例如,www.abc.com)即可,不可以使用範域名,例如*.abc.com。

申請證書

執行上面的腳本:

<code>$ sudo python3 let.py/<code>

如果有缺少模塊提示,則自行百度pip3安裝即可,很容易解決。

如果再遇到報錯,請仔細閱讀報錯信息,一般會遇到的問題是:

  • 忘記將域名解析到當前服務器
  • nginx配置忘記修改或者修改後未激活新配置
  • challenges目錄忘記建立或者權限有問題
  • 證書申請過多,超過當月最大上限次數

排除這幾方面,基本就會看到successfully的字樣表示成功了。

修改nginx配置

最後就是啟用證書了,修改nginx配置,在需要使用證書的server配置下增加如下內容:

<code>#當然不要忘記listen 443;
ssl on;
ssl_certificate /etc/nginx/certs/www/你的域名.crt;
ssl_certificate_key /etc/nginx/certs/www/你的域名.key;/<code>

你的域名與腳本中給出的域名保持一致。

reload或restart Nginx來使配置生效即可。


分享到:


相關文章: