一、準(zhǔn)備工作
1. 獲取SSL證書:首先需要為您的域名申請一個(gè)SSL證書。您可以從權(quán)威的證書頒發(fā)機(jī)構(gòu)(CA)如Let's Encrypt、阿里云、騰訊云等購買,或者使用免費(fèi)的SSL證書,如DigiCert、GlobalSign、StartCom等提供的免費(fèi)SSL證書。
2. 安裝openssl:根據(jù)您的操作系統(tǒng),從官方網(wǎng)站下載并安裝相應(yīng)的openssl客戶端工具。例如,在Windows系統(tǒng)上,您可以訪問https://slproweb.com/products/Win32OpenSSL.html下載適用于32位和64位操作系統(tǒng)的OpenSSL安裝包。
3. 備份網(wǎng)站文件:在進(jìn)行HTTPS網(wǎng)站配置之前,請務(wù)必備份您的網(wǎng)站文件,以防止配置過程中出現(xiàn)意外導(dǎo)致網(wǎng)站無法正常訪問。
二、配置HTTPS網(wǎng)站
1. 生成SSL證書簽名請求文件(CSR):登錄到您的服務(wù)器,進(jìn)入openssl的bin目錄,執(zhí)行以下命令生成CSR文件:
openssl req -new -key your_domain.key -out your_domain.csr
其中,your_domain.key是您的服務(wù)器私鑰文件名,your_domain.csr是您生成的CSR文件名。執(zhí)行此命令后,會(huì)提示您輸入一些信息,如國家、省份、城市、組織名稱等。完成后,會(huì)生成一個(gè)名為your_domain.csr的文件。
2. 從證書頒發(fā)機(jī)構(gòu)申請SSL證書:將剛剛生成的CSR文件發(fā)送給您選擇的證書頒發(fā)機(jī)構(gòu),提交申請。審核通過后,您會(huì)收到一份包含服務(wù)器公鑰和證書鏈的PEM格式文件。
3. 將證書鏈文件導(dǎo)入到openssl:將證書頒發(fā)機(jī)構(gòu)提供的PEM格式文件中的服務(wù)器證書(包括中間證書和根證書)復(fù)制到您的服務(wù)器上的某個(gè)目錄,然后執(zhí)行以下命令將其導(dǎo)入到openssl:
cat rootca.pem intermediate1.pem intermediate2.pem your_domain.crt > chain.pem
其中,rootca.pem是根證書文件名,intermediate1.pem和intermediate2.pem分別是中間證書文件名,your_domain.crt是您的服務(wù)器證書文件名。執(zhí)行此命令后,會(huì)生成一個(gè)名為chain.pem的文件。
4. 生成SSL配置文件:編輯httpd.conf(Apache服務(wù)器配置文件)或nginx.conf(Nginx服務(wù)器配置文件),根據(jù)您的服務(wù)器環(huán)境添加相應(yīng)的SSL配置項(xiàng)。以下是一個(gè)簡單的Apache示例:
<VirtualHost *:80>
ServerName your_domain.com
Redirect permanent / https://your_domain.com
</VirtualHost>
<IfModule mod_ssl.c>
SSLEngine on
SSLCertificateFile chain.pem
SSLCertificateKeyFile your_domain.key
SSLCertificateChainFile chain.pem
<Directory /var/www/html>
Options FollowSymLinks
Require all granted
</Directory>
</IfModule>5. 重啟服務(wù)器:保存配置文件后,重啟Apache服務(wù)器或Nginx服務(wù)器以使配置生效。具體重啟命令如下:
Apache:service httpd restart 或 systemctl restart httpd
Nginx:sudo service nginx restart 或 sudo systemctl restart nginx
三、測試HTTPS網(wǎng)站
至此,您已經(jīng)成功使用openssl進(jìn)行了HTTPS網(wǎng)站配置。打開瀏覽器,訪問您的網(wǎng)站,地址欄顯示為https開頭的鏈接,表示您已經(jīng)成功啟用了HTTPS協(xié)議。同時(shí),您可以通過查看服務(wù)器日志(如Apache的error_log或Nginx的access_log)確認(rèn)是否存在錯(cuò)誤信息。如果一切正常,恭喜您成功搭建了一個(gè)安全可靠的HTTPS網(wǎng)站!