在之前我的文章中我已经搭建了nextcloud服务器,现在我们需要通过域名及https访问怎么办
1. 进行了简单的httpd设置后,就可以为网站添加SSL证书功能了。
2. 首先得获取证书,有了证书才能添加。我们采用本地上传的方式将SSL证书上传到CentOS上。
获取证书推荐:https://freessl.cn/
证书类型:ECC
验证类型:DNS
证书解析:按提示操作添加域名解析(生成txt记录添加到域名解析)
下载证书:选择Apache类型证书
3. 首先,判断CentOS7是否已经安装了SSL证书服务模块 mod_ssl 与 openssl:
rpm -qa mod_ssl
rpm -qa openssl
键入上式,没有反应就是没有安装SSL证书服务模块 一般新装的CentOS7默认没有安装mod_ssl、openssl默认有安装。
4. 安装mod_ssl 与openssl
yum install mod_ssl openssl
如果已经安装了openssl,上述命令会直接更新openssl。
5. 经过第四步安装后,CentOS7中会自动生成 /etc/httpd/conf.d/ssl.conf 文件,ssl.conf文件就是SSL模块的配置文件。
6. 使用命令行,创建文件夹:/var/www/ssl
mkdir /var/www/ssl
(注意: mkdir 与待创建目录名之间只能隔一个空格。)
7. 教程为配置Apache的httpd服务器系统,所以我们将只需要将Apache文件夹下面的三个ssl证书文件上传到在CentOS上创建的 /var/www/ssl 文件夹即可。
这三个ssl证书文件分别是:
ca_bundle.crt
www.xxxx.com.crt
www.xxxx.com.key
8. 修改/etc/httpd/conf.d/ssl.conf文件:
对应于云服务商提供的SSL证书与Apache的ssl三证书特性,需要修改ssl.conf文件中的三个证书存放路径:
修改1:将第56行的:
修改为:
修改2:将第59行的:
#DocumentRoot "/var/www/html" 去掉#号注释,
修改为:DocumentRoot "/var/www/html"
修改3:将第60行的:
#ServerName www.example.com:443 去掉#号注释,
修改为:
ServerName www.xxxx.com:443
修改4:将第64行的:
ErrorLog logs/ssl_error_log 修改为:
ErrorLog /var/www/html/logs/error.log
修改5:查看设置第70行,是否设置为:SSLEngine on ,
如果不是就改为 SSLEngine on 。
修改6:将第100行的:
SSLCertificateFile /etc/pki/tls/certs/localhost.crt 修改为:
SSLCertificateFile /var/www/ssl/www.xxxx.com.crt
修改7:将第107行的:
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 修改为:
SSLCertificateKeyFile /var/www/ssl/www.xxxx.com.key
修改8:将第122行的:
#SSLCACertificateFile /etc/pki/tls/certs/ca-bundle.crt 去掉#号,修改为:
SSLCACertificateFile /var/www/ssl/ca_bundle.crt
因为 /var/www/html/logs/目录不存在,需要创建
mkdir /var/www/html/logs/
修改9:将末尾的第213行的:
CustomLog logs/ssl_request_log 修改为:
CustomLog /var/www/html/logs/access.log combined
并将下面一行的:"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x "%r" %b" 注释掉。
或者 去掉 combined 直接改为:
CustomLog /var/www/html/logs/access.log (推荐这种方法,保留通配符)
最后,重新httpd 服务,使得修改生效:
systemctl restart httpd
完成!!!
注:端口443需开放到公网、域名www.xxxx.com需添加解析到公网IP