在部署過程中,用戶要求把http改成https,並且不花錢不開放外網,只是在內網上使用。
這個需求只能是通過ssl自簽名方法進行解決,方法如下:
1、在linux系統中安裝nginx;
2、在nginx安裝目錄下輸入命令:mkdir ssl;
3、在ssl目錄下創建文件:touch MyCompanyCA.cnf
並在配置文件輸入以下內容:
[ req ]
distinguished_name = req_distinguished_name
x509_extensions = root_ca
[ req_distinguished_name ]
# 配置證書信息
countryName = CN (2 letter code)
countryName_min = 2
countryName_max = 2
stateOrProvinceName = SiChuan
localityName = ChengDu
0.organizationName = Mycompany
organizationalUnitName = technology
commonName = develop
commonName_max = 64
emailAddress = xxxxxxxx@gmail.com
emailAddress_max = 64
[ root_ca ]
basicConstraints = critical, CA:true
4、繼續創建文件:touch MyCompanyLocalhost.ext
並在文件中輸入以下內容:
subjectAltName = @alt_names
extendedKeyUsage = serverAuth
[alt_names]
# 域名,如有多個用DNS.2,DNS.3…來增加
DNS.2=你的域名
# IP地址
IP.1 = 你的ip
5、保存以上2個文件,然后輸入以下腳本:
openssl req -x509 -newkey rsa:2048 -out MyCompanyCA.cer -outform PEM -keyout MyCompanyCA.pvk -days 10000 -verbose -config MyCompanyCA.cnf -nodes -sha256 -subj "/CN=MyCompany CA"
openssl req -newkey rsa:2048 -keyout MyCompanyLocalhost.pvk -out MyCompanyLocalhost.req -subj /CN=localhost -sha256 -nodes
openssl x509 -req -CA MyCompanyCA.cer -CAkey MyCompanyCA.pvk -in MyCompanyLocalhost.req -out MyCompanyLocalhost.cer -days 10000 -extfile MyCompanyLocalhost.ext -sha256 -set_serial 0x1111
6、等到的目錄結構如下:
7、先給你的nginx.conf備份(改配置文件先備份是個好習慣),cp nginx.conf nginx.conf_bak
8、配置nginx.conf:輸入以下代碼,文件路徑修改為你的路徑:
9、重啟nginx :
nginx -s reload
10、登錄相關網站,把證書設置為受信任的即可。