Linux申请免费证书+Apace配置+http重定向到https
一、环境:
宿主机: Centos
站环境:Apache(LAMPP)
证书方:Let’s Encrypt
二、获取Let’s Encrypt 免费SSL证书
#1、下载 letsencrypt-auto 脚本,使用它能够很方便地完成域名验证和SSL证书的获取。
$ git clone https://github.com/letsencrypt/letsencrypt
#2、进入到脚本所在目录
$ cd letsencrypt
#3、 获取证书
$ ./letsencrypt-auto certonly --standalone --email ×××××××@qq.com -d www.×××××××.top -d www.×××××××.com
# 执行上述命令需注意:
(1) 执行此命令必须使用 root用户获得文件夹的权限;
(2) 域名能访问并且有绑定的公网IP;
(3) 必须在此域名绑定的服务器上运行;
(4) 会使用80断端口,如果apache/nginx监听80端口,把apche/nginx先关掉.
经过两次确认操作,会出现如下结果,代表成功!
证书申请成功会在 /etc/letsencrypt/live/你的域名/下出现四个文件
cert.pem 证书文件
privkey.pem 密钥文件
chain.pem 密钥链
fullchain.pem 不用
至此:获取证书完成!FUCK!
三、配置Apache
打开apache安装目录下的 httpd_ssl.conf 配置以下内容
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile /etc/letsencrypt/live/你的域名/cert.pem
# 证书私钥配置
SSLCertificateKeyFile /etc/letsencrypt/live/你的域名/privkey.pem
# 证书链配置,如果该属性开头有 '#'字符,请删除掉
SSLCertificateChainFile /etc/letsencrypt/live/你的域名/chain.pem
打开apache安装目录下的 httpd_vhost.conf 配置以下内容
<VirtualHost *:443>
ServerAdmin your.com
ServerName your.com
DocumentRoot /data/www/hbappserver/public
SSLEngine on
# 添加 SSL 协议支持协议,去掉不安全的协议
SSLProtocol all -SSLv2 -SSLv3
# 修改加密套件如下
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
# 证书公钥配置
SSLCertificateFile /etc/letsencrypt/live/你的域名/cert.pem
# 证书私钥配置
SSLCertificateKeyFile /etc/letsencrypt/live/你的域名/privkey.pem
# 证书链配置,如果该属性开头有 '#'字符,请删除掉
SSLCertificateChainFile /etc/letsencrypt/live/你的域名/chain.pem
</VirtualHost>
四、重启 restart
至此:可以通过 https://域名/访问你的网页了。。。。
五、HTTP 自动跳转 HTTPS 的安全配置(可选)
首先: 将httpd.conf 里的 #LoadModule rewrite_module modules/mod_rewrite.so去掉注释
方法一:在网站根目录下面/htdocs下创建 .htaccess文件,
#将网站下所有的 http://域名 --> https://域名
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
#将网站特定的域名 http://域名 --> https://域名
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^www.××××.com [NC]
RewriteRule ^(.*)$ https://www.××××.com [R,L]
</IfModule>
方法二、修改httpd.conf 或者 httpd_vhost.conf
<Directory />
Options FollowSymLinks
AllowOverride All
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)?$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</Directory>
六、利用apache代理wss(扩展)
准备工作:
1、GatewayWorker 监听 8282 端口(websocket协议)
2、已经申请了ssl证书, 放在了/server/httpd/cert/ 下
3、利用apache转发443端口至指定端口8282
4、httpd-ssl.conf 已加载
5、openssl 已安装
启用 proxy_wstunnel_module 模块
#将httpd.conf 中下面两个模块取消注释
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
#代理wss模块
SSLProxyEngine on
ProxyRequests OffIPIP
ProxyPass /wss ws://IP:2346
ProxyPassReverse /wss ws://IP:2346
腾讯云 SSL
https://cloud.tencent.com/document/product/400/35243