您好,欢迎光临华籁云--网络化建设综合服务商!配套业务:服务器运维画册设计    走进华籁:解决方案华籁观点关于我们联系我们支付方式    手机版    GLOBAL      淘宝店铺
当前位置:首页 > 华籁观点 > 建站知识

apache环境如何安装SSL证书实现https访问

Apache和Nginx环境目前使用量占据PHP网站的大部分市场,今天跟着华籁一起来仔细的看一下如何在Apache环境中实现SSL证书的安装,最终实现https://形式的访问。Nginx环境下的配置我们明天发布敬请关注。

Apache格式的证书解压后应包含三个文件:

domain.com.crt  (域名证书,也可能是pem格式)

domain.com.key  (私钥文件)

domain.com-ca-bundle.crt (根证书链,也可能是其他文件名,一般带有 ca 或者 chain )


第一步

把证书放在apache的conf/ssl目录下,如果conf目录里没有ssl目录,可以新建一个

放在conf/ssl可以用相对路径,其他位置需要用绝对路径


第二步

找到站点的80端口配置,一般在conf/vhosts.conf文件里(有的是在conf/extra/httpd-vhosts.conf),比如下面这一段

<VirtualHost *:80>

  ServerName hualay.net

  ServerAlias www.hualay.net

  DocumentRoot /www/wwwroot

  #其他的配置信息···

</VirtualHost>


第三步

在vhosts.conf同级目录里,新建一个vhosts-https.conf文件,复制80端口配置过来进行修改,添加ssl配置

<VirtualHost *:443>

  ServerName hualay.net

  ServerAlias www.hualay.net

  DocumentRoot /www/wwwroot

  #不同证书文件名和后缀可能不同  修改文件名为apache的3个实际文件名即可

  SSLEngine on

  SSLCertificateFile   conf/ssl/hualay.net.crt

  SSLCertificateKeyFile  conf/ssl/hualay.net.key

  SSLCertificateChainFile conf/ssl/hualay.net-ca-bundle.crt

  #其他的配置信息···

</VirtualHost>


第四步

打开conf目录里的httpd.conf文件,找到 Include conf/vhosts.conf 在下面添加

#这一行一般在文件后面,从后面更容易找到

Include conf/vhosts.conf

#下面是添加的

Include conf/vhosts-https.conf

Listen 443

SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE

SSLProtocol All -SSLv2 -SSLv3

SSLHonorCipherOrder On


配置完成

重启Apache使其生效

使用https://domain.com 测试是否可以访问

配置完成如果apache无法启动,先检查是否加载 mod_ssl.so 模块的问题


Linux 检查 mod_ssl.so模块

Linux系统检测方法使用以下命令:

find / -name mod_ssl.so | grep modules/mod_ssl.so


如果能查找到 mod_ssl.so 一般情况下已经安装了mod_ssl.so模块

如果没有找到,可以用下面的命令安装

CentOS/Redhat安装mod_ssl.so

yum install mod_ssl


Debian/Ubuntu

sudo a2enmod ssl

sudo service apache2 restart


打开httpd.conf文件查看是否加载ssl模块

LoadModule ssl_module modules/mod_ssl.so (如果前面有#号要去掉)


Windows 检查 mod_ssl.so模块

Windows一般只需要打开httpd.conf文件查看是否加载ssl模块

LoadModule ssl_module modules/mod_ssl.so (如果前面有#号要去掉)


Apache自动跳转到 HTTPS

网站根目录新建 .htaccess

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]


站点绑定多个域名,只允许www.example.com 跳转

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteCond %{HTTP_HOST} ^example.com [NC,OR]

RewriteCond %{HTTP_HOST} ^www.example.com [NC]

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]


都跳转到https://www.example.com

RewriteEngine On

RewriteCond %{SERVER_PORT} 80 [NC,OR]

RewriteCond %{HTTP_HOST} ^example.com [NC]

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

###把网址更改为自己的###


高级用法 (可选)

RewriteEngine on

# 强制HTTPS

RewriteCond %{HTTPS} !=on [OR]

RewriteCond %{SERVER_PORT} 80

# 某些页面强制

RewriteCond %{REQUEST_URI} ^something_secure [OR]

RewriteCond %{REQUEST_URI} ^something_else_secure

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# 强制HTTP

RewriteCond %{HTTPS} =on [OR]

RewriteCond %{SERVER_PORT} 443

# 某些页面强制

RewriteCond %{REQUEST_URI} ^something_public [OR]

RewriteCond %{REQUEST_URI} ^something_else_public

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

# ThinkPHP 跳转 添加到规则后

RewriteCond %{SERVER_PORT} 80

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]


华籁云淘宝店铺
华籁云为您提供南京网站制作及维护、服务器租用及代维
网站优化推广、企业邮箱、400电话、画册LOGO设计等。
微信二维码
客服QQ:465597938    邮箱:service#hualay.net
电话:4006661495  /  025-85999293
南京网站建设
高品质技术服务商