一、目标
在Centos7.6平台下使用openssl给apache做自签名证书,并给apache设置HTTPS的SSL证书。(无坑版)
二、平台
[[email protected] ~]# uname -r
3.10.0-957.el7.x86_64
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[[email protected] ~]# rpm -qa |grep httpd
httpd-tools-2.4.6-90.el7.centos.x86_64
httpd-2.4.6-90.el7.centos.x86_64
三、前言
1.请严格按照上面所述准备安装环境(有可能不同版本的centos也是可以的,但没去测试不保证一定能行)
2.确保你的centos7是能够上网的。
3.假定你的域名叫hiibm.com,想通过https://www.hiibm.com的方式来访问主页。已经配置好apache能访问http://www.hiibm.com
四、安装Openssl,并制作自签名证书
1.安装Openssl
[root@centos764 httpd]# yum install -y mod_ssl
2.新建证书存放目录,建议放到apache主配置文件夹下
mkdir /etc/httpd/certs
3.创建一个证书密钥(2048位的加密私钥)
执行成功的话会在/etc/httpd/certs/下生成一个ca.key的密钥文件
[root@centos764 certs]# cd /etc/httpd/certs
[root@centos764 certs]# openssl genrsa -out ca.key 2048
4.生成证书签名请求csr文件
执行下面的命令后,会让输入郭嘉名CN,省州名Shanghai,城市名Shanghai,组织名hiibm.com,单位名hiibm.com,主机名hiibm.com,email:[email protected],然后还问你是否输入密码{A challenge password []:}嫌麻烦的话可以直接回车。最后再输入个公司名hiibm.com回车。
顺利的话会在/etc/httpd/certs/下生成一个ca.csr文件
[root@centos764 certs]# openssl req -new -key ca.key -out ca.csr
5.Centos7下使用Openssl给Apache创建自签名证书
注释:-days 3721代表证书的有效天数,-in ca.csr使用刚才生成的证书请求文件,-signkey ca.key使用刚才生成的密钥文件,-out ca.crt生成自签名证书ca.crt文件
如果顺利的话会在/etc/httpd/certs/下生成一个ca.crt文件
[root@centos764 certs]# openssl x509 -req -days 3721 -in ca.csr -signkey ca.key -out ca.crt
五、给apache安装SSL模块,并配置Apache开启SSL
啰嗦:如果你的apache是使用yum install httpd的方式安装的,那么它将不会给你安装SSL模块,也就是需要我们单独安装SSL模块,也非常简单,看下面
1.安装apache的SSL模块
yum install -y mod_ssl
2.再啰嗦,我的环境是centos7.6,apache是httpd-2.4.6-90.el7.centos.x86_64,我只保证按照我的环境能成功(如果版本差别不大,应该没啥问题,你可以尝试一下)
3.修改ssl.conf配置文件,并添加SSL站点域名及路径到配置文件
vim /etc/httpd/conf.d/ssl.conf
3-1.将SSLCertificateFile /etc/pki/tls/certs/localhost.crt 修改为【SSLCertificateFile /etc/httpd/certs/ca.crt】
3-2.将SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 修改为【SSLCertificateKeyFile /etc/httpd/certs/ca.key】
3-3.将#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt修改为【SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt】
3-4.顺手将SSL站点加到配置文件/etc/httpd/conf.d/ssl.conf中
(注意里面有我们刚才生成的证书地址,请确保证书地址和文件路径是对的)
ServerName hiibm.com
DocumentRoot /var/www/html/hiibm.com
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile /etc/httpd/certs/ca.crt
SSLCertificateKeyFile /etc/httpd/certs/ca.key
SSLCertificateChainFile /etc/httpd/certs/ca.csr
ServerName www.hiibm.com
DocumentRoot /var/www/html/hiibm.com
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile /etc/httpd/certs/ca.crt
SSLCertificateKeyFile /etc/httpd/certs/ca.key
SSLCertificateChainFile /etc/httpd/certs/ca.csr
4.别忘记重启apache服务,让配置生效
如果你开启了防火墙,别忘记放行443端口,如果你不知道怎么放行,直接systemctl stop firewalld关掉它即可。
systemctl restart httpd
六、修改以http方式访问站点时自动跳转到https(本步骤可选)
啰嗦:之前我的http站点配置文件放在了/etc/httpd/conf.d/vhosts.conf中了,修改一下它,让它自动跳转到HTTPS上去
[root@centos764 conf.d]# vim /etc/httpd/conf.d/vhosts.conf
#下面的以Rewrite开头的那三行是本次的重点,其余的是以前配置http方式时做的虚拟站点
ServerName hiibm.com
ServerAlias hiibm.com www.hiibm.com
DocumentRoot /var/www/html/hiibm.com
DirectoryIndex index.html index.php
ErrorLog /var/log/httpd/hiibm.com/hiibm.com-error.log
CustomLog /var/log/httpd/hiibm.com/hiibm.com-access.log common
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{SERVER_NAME}$1 [L,R]
别忘记重启apahce服务,让配置生效
systemctl restart httpd
七、测试
1.先自己去设置一下hosts文件c:\windows\system32\drivers\etc\hosts,加个指向到centos,
如:10.100.100.64 hiibm.com
如:10.100.100.64 www.hiibm.com
2.浏览器打开https://www.hiibm.com
(如果你做了HTTP自动跳转HTTPS的话,你还可以直接在浏览器地址栏里输入hiibm.com即可)
点继续前往
------------------------------------------END---2020年2月18日01:25:00----------------------------------------------------------
最后再放送一个福利,如果你的域名是阿里云的,可以免费申请symantec的ssl证书,不过是一年的哦,不过也非常不错了(毕竟各大浏览器都承认symantec的证书,当你使用它的证书后,浏览器就不会说你是不可信的了。直接就可以打开https页面)
----------------------------------------------------------------------------------------------------------------------------------------------
本帖写给刚入坑的朋友,本人也是刚玩linux不就,弄个php环境找了一天的帖子,到处是坑。这里总结一下分享出来。但你要知道写帖子容易,但写技术帖子+截图+注解真的耗时间。非常辛苦。
如果我的帖子能帮到你,我也希望得到你的支持,鼓励我写更多无坑的帖子,不胜感激。