人工置頂
正常情況下請不要使用自簽名證書,因為自簽的證書需要用戶安裝證書才能得到信任,而且維護(hù)起來也比較麻煩
let`s encrypt提供免費的證書 https://github.com/certbot/certbot
但是有的場景l(fā)et`s encrypt不支持屈张,可以使用自簽名證書或者交錢去CA機(jī)構(gòu)買證書
CA根證書制作
#1.生成根證書密鑰
$ openssl genrsa -out ca.key 4096 #建議長度為4096,1024長度已經(jīng)被列為不安全诱渤。
#2.生成自簽名根證書
$ openssl req -new -x509 -days 3650 -key ca.key -out ca.crt #這里在輸入CommonName的時候輸入名稱而不是域名或者ip,就是證書上顯示的頒發(fā)者船老,雖然是自簽名證書,但是盡量讓證書看起來標(biāo)準(zhǔn)一些
使用根證書來簽名其它證書
1.生成證書密鑰
$ openssl genrsa -out server.key 4096
2. Subject Alt Name(SAN)
高版本的Chrome瀏覽器會要求設(shè)置subjectAltName
,如果沒有設(shè)置SAN會報證書錯誤
參考o(jì)penssl配置文件,Linux服務(wù)器上通常在/etc/pki/tls/openssl.cnf
新建文件san.conf
[req]
default_bits = 4096
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = country
stateOrProvinceName = province
localityName = city
organizationName = company name
commonName = domain name or ip
[v3_req]
subjectAltName = @alt_names
[alt_names]
NDS.1=domain #可以使用通配符
IP.1=xxx.xxx.xxx.xxx
3. 生成證書簽名請求(CSR)
向根證書請求簽名一個新的證書屠凶,由于用戶信任了你的根證書迫横,所以根證書簽名的其它證書也會被信任
# 生成csr 注意要使用sha256算法(推薦是sha256算法酷窥,默認(rèn)算法瀏覽器會報弱加密算法錯誤)
$ openssl req -new -key server.key -out server.csr -config san.conf -sha256
# 查看csr信息
$ openssl req -text -in server.csr
csr信息中會有類似的信息
Requested Extensions:
X509v3 Subject Alternative Name:
IP Address:xxxxxx
4.使用根證書按照csr給證書簽名继找,生成新證書server.crt
這里serial參數(shù)需要全局唯一,否則在同一臺設(shè)備上使用serial值相同的證書會沖突负溪。
$ openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt -extfile san.conf -extensions v3_req
查看證書信息
$ openssl x509 -text -in server.crt
證書信息中會有類似信息
X509v3 extensions:
X509v3 Subject Alternative Name:
IP Address:xxxxxx
說明
以上操作均在centos7.2環(huán)境下測試通過
mac買不起
windows懶得去試了