欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在Apache服务器上安装SSL证书

程序员文章站 2022-07-06 11:16:38
前提是你先买好证书,下载下来,证书压缩包打开共有3个文件 证书文件:以.crt为后缀或文件类型。 证书链文件:以.crt为后缀或文件类型。 密钥文件:以.key为后缀或文件类型。 在Apache安装目录中新建cert目录,并将解压的Apache证书、 证书链文件和密钥文件拷贝到cert目录中。 如果 ......

前提是你先买好证书,下载下来,证书压缩包打开共有3个文件

在Apache服务器上安装SSL证书

 

  • 证书文件:以.crt为后缀或文件类型。
  • 证书链文件:以.crt为后缀或文件类型。
  • 密钥文件:以.key为后缀或文件类型。

 

apache安装目录中新建cert目录,并将解压的apache证书、 证书链文件和密钥文件拷贝到cert目录中。

如果需要安装多个证书,需在apache目录中新建对应数量的cert目录,用于存放不同的证书 。

 如果申请证书时选择了手动创建csr文件,请将手动生成创建的密钥文件拷贝到cert目录中并命名为domain name.key。

在Apache服务器上安装SSL证书

 

 在Apache服务器上安装SSL证书

 

 

在apache安装目录下,打开apache/conf/httpd.conf文件,并找到以下参数,按照下文中注释内容进行配置

#loadmodule ssl_module modules/mod_ssl.so  #删除行首的配置语句注释符号“#”加载mod_ssl.so模块启用ssl服务,apache默认是不启用该模块的。如果找不到该配置,请重新编译mod_ssl模块。
#include conf/extra/httpd-ssl.conf  #删除行首的配置语句注释符号“#”。  

httpd.conf文件并退出

 

打开apache/conf/extra/httpd-ssl.conf文件并找到以下参数,按照下文中注释内容进行配置。

证书路径建议使用绝对路径。

根据操作系统的不同,http-ssl.conf文件也可能存放在conf.d/ssl.conf目录中。

<virtualhost *:443>     
    servername   #修改为申请证书时绑定的域名www.yourdomainname1.com。                    
    documentroot  "d:/phpstudy/www/yg"         
    sslengine on   
    sslprotocol all -sslv2 -sslv3 # 添加ssl协议支持协议,去掉不安全的协议。
    sslciphersuite high:!rc4:!md5:!anull:!enull:!null:!dh:!edh:!exp:+medium   # 修改加密套件。
    sslhonorcipherorder on
    sslcertificatefile "d:/phpstudy/apache/cert/2335105__yg1st.com_public.crt"   # 将domain name1_public.crt替换成您证书文件名。
    sslcertificatekeyfile "d:/phpstudy/apache/cert/2335105__yg1st.com.key"   # 将domain name1.key替换成您证书的密钥文件名。
    sslcertificatechainfile "d:/phpstudy/apache/cert/2335105__yg1st.com_chain.crt"  # 将domain name1_chain.crt替换成您证书的密钥文件名;证书链开头如果有#字符,请删除。
</virtualhost>

#如果证书包含多个域名,复制以上参数,并将servername替换成第二个域名。 
<virtualhost *:443>     
    servername   #修改为申请证书时绑定的第二个域名www.yourdomainname2.com。                    
    documentroot  "d:/phpstudy/www/yg"        
    sslengine on   
    sslprotocol all -sslv2 -sslv3 # 添加ssl协议支持协议,去掉不安全的协议。
    sslciphersuite high:!rc4:!md5:!anull:!enull:!null:!dh:!edh:!exp:+medium   # 修改加密套件。
    sslhonorcipherorder on
    sslcertificatefile "d:/phpstudy/apache/cert/2335105__yg1st.com_public.crt"   # 将domain name2替换成您申请证书时的第二个域名。
    sslcertificatekeyfile "d:/phpstudy/apache/cert/2335105__yg1st.com.key"   # 将domain name2替换成您申请证书时的第二个域名。
    sslcertificatechainfile "d:/phpstudy/apache/cert/2335105__yg1st.com_chain.crt"  # 将domain name2替换成您申请证书时的第二个域名;证书链开头如果有#字符,请删除。
</virtualhost>

 

改完之后,注意这文件里有一些关于logs文件的,路径一定要改对,根据实际路径来

比如我的就是:

errorlog "d:\phpstudy\apache\logs\error.log"
transferlog "d:\phpstudy\apache\logs\access.log"

 

改完之后打开cmd

进入你的apache安装目录的bin目录下

使用:httpd -t

测试,如果有报错就根据提示信息修改;没有报错则重启apache即可

 

网站成功安装证书,可以用https打开

这样做完的结果是,用https可以打开,但是http开头的还是打不开

还需要设置让http开头的网站自动跳转到https开头

在httpd.conf的<directory>标签内,键入以下内容

rewriteengine on
rewritecond %{server_port} !^443$
rewriterule ^(.*)?$ https://%{server_name}/$1 [l,r=301]

当然我的不完全是这样,因为我有设置别的伪静态规则,因此做了一些调整

 

证书安装完成之后,发现在谷歌浏览器里左上角有个提示,点开显示网站连接并非完全安全

在Apache服务器上安装SSL证书

原因是我们的页面存在一些不安全的http请求,比如图片、js等静态文件。

我们只需要将其升级为https请求即可。

页面的head中加入:

<meta http-equiv="content-security-policy" content="upgrade-insecure-requests">

意思是自动将http的不安全请求升级为https
添加之后,谷歌浏览器显示“链接是安全的”

在Apache服务器上安装SSL证书