参考url
https://blog.csdn.net/ithomer/article/details/50433363
https://www.centos.bz/2018/01/apache-%E5%BC%BA%E5%88%B6-http-%E5%85%A8%E9%83%A8%E8%B7%B3%E8%BD%AC%E5%88%B0-https/
大体做法
- 生成csr,key,crt
- 改apache配置
- 改.htaccess强制所有http访问转到https
详细做法
生成ssl必须的csr,key,crt
假设CentOS已经安装了Apache Web服务器。我们需要使用OpenSSL生成自签名证书。如果尚未安装OpenSSL,它可以使用yum来安装。
# yum install mod_ssl openssl
首先,生成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
在生成csr,key这个步骤,可以使用这个url
https://myssl.com/csr_create.html
改apache配置
- 打开
LoadModule ssl_module modules/mod_ssl.so - 打开 Include conf/extra/httpd-ssl.conf
- 关闭 Include conf/extra/httpd-ahssl.conf
- 在httpdd-ssl.conf内
<VirtualHost default:443>的选项
将key,crt的路径修改
SSLCertificateKeyFile "${SRVROOT}/conf/SSL.KEY"
SSLCertificateFile "${SRVROOT}/conf/SSL.CRT"
别忘了修改 DocumentRoot "${SRVROOT}/htdocs/xxx"
- 注意防火墙打开443端口
改.htaccess强制所有http访问转到https
网站根目录下面的.htaccess文件
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</IfModule>
注意 要修改httpd.conf中
<Directory "${SRVROOT}/htdocs/xxxx">
AllowOverride None
这里的None要改为All