原本并非打算從http升級到https,但遭到了電信挾持,在網站中強行插入了電信廣告,因此被迫只能升級到https。
還好,升級到https并沒有想象中的那么復雜。
以下會講到自簽名證書的安裝和免費SSL證書Let`s Encrypt的安裝
自簽名證書:無需使用第三提供的SSL證書,實現https,但瀏覽器會提示該簽名不安全,但仍然可以使用https訪問,適用于自己的測試服務器或個人服務器
使用免費SLL證書:使用到了第三方提供的SSL證書,實現https,一切正常,企業使用也沒問題,但Let`s Encrypt提供的證書每隔90天就要重新申請一次
一、自簽名證書安裝
1. 安裝相關工具
yum install mod_ssl openssl
2.生成簽名文件(默認生成在當前目錄下)
首先,生成2048位的加密私鑰
openssl genrsa -out server.key 2048
然后,生成證書簽名請求(CSR),這里需要填寫許多信息,如國家,省市,公司等
openssl req -new -key server.key -out server.csr
最后,生成類型為X509的自簽名證書。有效期設置3650天,即有效期為10年
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
3.把簽名文件復制到指定目錄下
創建證書后,將文件復制到對應的目錄。
cp server.crt /etc/pki/tls/certs/
cp server.key /etc/pki/tls/private/
cp server.csr /etc/pki/tls/private/
4.修改apache的全局ssl.conf
sudo vi /etc/httpd/conf.d/ssl.conf
僅僅需要把其中的簽名文件引用路徑改成我們第3步復制的路徑
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
5.修改虛擬主機設置
<VirtualHost *:443>
ServerAdmin admin@example.com
DocumentRoot "/data/wwwroot/"
ServerName www.example.com:443
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
略
</VirtualHost>
6.修改添加端口監聽
vi /usr/local/apache/conf/httpd.conf
Listen 443 https
7.如果你設置了防火墻,請在防火墻中開啟443端口
如果是firewalld的可以使用下面命令
sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https
sudo firewall-cmd --runtime-to-permanent
如果是iptables的可以使用下面命令
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
8.重啟apache
apachectl restart 或者 service httpd restart(oneInStack環境)
9.提示
如果瀏覽器提示簽名不安全,是正?,F象,仍然可以強行訪問https,此時說明已經安裝成功。
其實實現https的主要是以下兩個簽名生成的文件的生成和引入
server.crt
server.key
二、使用免費SLL證書
1.先解除443端口的占用
如果你已經使用了443端口,比如你已經安裝了自簽名證書,并開啟了https,此時apache已經占用了443端口,那么你在安裝letsencrypt會提示443端口已經被占用,無法綁定,所以我們提前先解除apache對443端口的監聽,并暫時移出vhost下443的虛擬主機
vi /usr/local/apache/conf/httpd.conf
## Listen 443 https 暫時注釋掉這行
apachectl restart 或者 service httpd restart(oneInStack環境) 重啟apache
2.下載letsencrypt項目,并進入該目錄,執行生成免費SSL證書命令
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --standalone --email YOUREMAIL@XXX.com -d YOURDOMAIN.com -d www.YOURDOMAIN.com 請用你自己的郵箱和域名
看到Congratulations說明生成免費SSL成功
證書會生成在 /etc/letsencrypt/live/YOURDOMAIN.com/目錄下
3.修改apache的全局ssl.conf
sudo vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/letsencrypt/live/YOURDOMAIN.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/YOURDOMAIN.com/privkey.pem
4.修改添加端口監聽
vi /usr/local/apache/conf/httpd.conf
Listen 443 https
5.如果你設置了防火墻,請在防火墻中開啟443端口
如果是firewalld的可以使用下面命令
sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https
sudo firewall-cmd --runtime-to-permanent
如果是iptables的可以使用下面命令
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
6.重啟apache
apachectl restart 或者 service httpd restart(oneInStack環境)
7.提示
使用免費SLL證書:使用到了第三方提供的SSL證書,實現https,一切正常,企業使用也沒問題,但Let`s Encrypt提供的證書每隔90天就要重新申請一次
其實實現https的主要是以下兩個簽名生成的文件的生成和引入
fullchain.pem
privkey.pem
來自作者的小留言
- 本文原創,允許任意轉載,但請按以下格式轉載
轉載自簡書-王樂城愚人云端:+【本文鏈接】 - 我的小博客:愚人云端