admin 发表于 2016-7-9 22:41:24

CentOS Apache配置SSL让网站对外提供https服务

本文假设你的apache是通过 yum的方法安装的。(手工编译安装的请立刻关闭此文,难到你还不会SSL配置?)

启动apache命令:
systemctl start httpd.service(注意不是:service httpd start ,老命令了)
默认apache是没有安装SSL模块的,所以需要安装,接着使用命令:
yum install -y mod_ssl
安装结束后,在你的/etc/httpd/conf.d 下面会出现一个 SSL.conf ,否则是没有的

打开SSL.conf,要配置一下。

首先来到<VirtualHost _default_:443> 这样的字样。寻找、替换或者自己打入如下配置:

DocumentRoot “这里填你网站的根目录”
ServerName 域名:443

接下来就是配置证书路径:(这里建议大家去网上找个SSL购买证书的网站,譬如“沃通”,然后去申请个临时免费的证书。不要自签名,没啥意思。网上又不要钱,临时用完了再申请一次)

申请好证书后,一般会给你三个文件。一个是根证书(譬如root_bundle.crt),一个是服务端证书(譬如www.xxx.com.crt),一个是证书私钥(譬如www.xxxx.com.key).大家注意后缀名,自己想一想。

然后把这三个证书通过ftp传到你喜欢的文件夹中。

一般来说 我们网站都只要服务端单向认证,也就是不需要验证客户端,那么只要配置以下两个部分

1、SSLCertificateFile这里放你的服务端证书路径

2、SSLCertificateKeyFile 放私钥文件路径

如果你还需要客户端服务端双向,那么除了上述部分还要加入以下:

1、SSLCACertificateFileroot_bundle.crt的路径

2、SSLVerifyClient require

其余部分一边度娘一边改,这里就不多说了。以上是一个最简单的apache SSL配置。配好后一定要:

1、重启apache ,不要问为什么,不告诉你

2、尝试用https://xxxx.com 的方式来访问一下对不对

3、如果没有域名,那么你可以更改hosts文件来实现。不要问怎么改hosts文件,不想解释,太累

注意:
1、有时候会提示SSLCertificateKeyFile: file 'xxx/xxx/xxx.key' does not exist or is empty,这是SELinux服务的原因,setforce 0 把该服务先关闭
2、在开启https后会造成原有的http服务中伪静态失效,原因有可能是之前伪静态配置在httpd.conf中,而现在不再是80端口提供服务,因此要将伪静态的那段规则复制一份到ssl.conf的<VirtualHost></VirtualHost>中间

Sian 发表于 2016-7-9 22:51:36

补充一点:如果需要让http访问能自动跳转到https访问,可以在http的伪静态中添加如下规则RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} PS:最好是添加到伪静态规则的最前面,不解释。
页: [1]
查看完整版本: CentOS Apache配置SSL让网站对外提供https服务