Windows下Apache2.4配置SSL(HTTPS)

本文详细介绍了如何在Apache2.4上配置SSL证书,包括自签名证书和CA证书的准备,以及具体配置步骤。内容涵盖自签名证书与CA证书的区别,使用OpenSSL生成证书,以及在Apache配置文件中的设置,旨在提供清晰、简洁的操作指南。
摘要由CSDN通过智能技术生成

目录

前言

准备SSL证书

1 自签名证书与CA证书

2 准备自签名证书

3 准备CA证书

apache2.4配置SSL证书

1 注意事项

2 SSL证书配置apache

3 CA证书配置apache


前言

说实话关于apache配置SSL的教程网上已经一抓一大把了,但是它们都有两个共同的缺点,一是不指明操作系统和apache版本,也不指名是自签证书还是购买的证书;二是重复内容太多,往往找十个教程里面有五个甚至以上内容是一样的,垃圾信息满天飞。

准备SSL证书

对于https而言,我们可以准备两种SSL证书,一种是自签名证书,一种是向证书颁发机构(CA)购买的证书。

1 自签名证书与CA证书

自签名,顾名思义就是自己签名,自签名证书的证书颁发机构是服务端本身,而CA证书的证书颁发机构是可信的证书颁发机构。在文件传输的机密性上,自签名证书与CA证书的保护力是相同的,但是CA证书能够证明使用此证书的网站的可信性。

如果上述文字还不够形象的话,请想象客户端A与服务端B、证书颁发机构C为三个人,其中C在整个人类社会中享有一定的知名度(也就是说,AB都认识且新任C),而AB两人素不相识。当A想要访问B却没有关于B的其他信息时:

B掏出一份由C为证明人的证书,告诉A自己是B。(HTTPS+CA证书)

B掏出一份由自己为证明人的证书,告诉A自己是B。(HTTPS+自签名证书)

B不掏出证书,直接说自己是B。(HTTP)

在这三种情况下,A对B的信任度显而易见是逐步递减的。但是,如果在AB本身是认识的情况下(A见过B的签名,但是没有见过B本人,也就是说B作为CA是被A信任的),自签名证书的证明效力并不比CA证书的效力低。所以很多内部使用的网站可以使用自签名证书,这建立在双方原本就约定过的情况下。

2 准备自签名证书

我们使用OpenSSL来生成一个自签名证书(登陆其官网/index.html即可下载)。

安装成功之后,打开安装目录/bin/openssl.exe(请使用管理员权限打开,否则可能出现拒绝访问提示/生成正常但是找不到文件

1.输入:genrsa -out 你的CAkey文件要存放的位置 2048 生成ca证书密钥。-out说明其为输出文件,2048是其密钥位数。

2.输入:req -new -x509 -days 365 -key 上一步生成文件的位置 -out 你的CAcrt文件要存放的位置 生成ca证书。-x509是其采用的标准,-days说明其生效时间,一般为一年(365)。在输入命令后,openssl会询问你的国家地区机构名等信息,其余信息不想填可以填.(缺省值),请填写你的真实情况(因为他们后期还会被使用),但是其中的CN(Common Name)必须填你颁发证书给的的域名。

3.输入:genrsa -out 你的网站key文件要存放的位置 2048 生成一份网站SSL证书密钥。

4.输入:req -new -key 上一步key文件的位置 -out 你的网站csr文件位置 生成网站证书请求文件CSR。填写信息的规则同上生成crt文件中填写信息的规则。

5.输入:x509 -req -days 365 -in 你的csr文件的位置 -CA 你的ca证书的位置 -CAkey 你的ca密钥的位置 -set_serial 01 -out 你的网站证书要存放的位置 用之前生成的CA证书和密钥给网站证书和密钥签名。

3 准备CA证书

请参照颁发机构的教程。如果你选择的是自己生成请求文件的方式,可以参照上文中准备自签名证书的步骤,但只需要生成一个csr文件。

apache2.4配置SSL证书

1 注意事项

在配置SSL证书的过程中请关闭windows服务下的apache(如果你已经将其作为服务安装),并使用命令行手动启动apache。这有助于你在apache无法启动的情况下发现错误(服务启动不能不会报错,只会报错误代码)。

如果报错Cannot define multiple Listeners on the same IP:port,请检查所有的conf文件(extra文件夹中的也要检查),查看它们是否监听了443端口。

2 SSL证书配置apache

打开apache的配置文件(根文件夹/conf/)httpd.conf,添加以下两行(也可以找到带有注释的这两行并且去除注释符号):

LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf

打开(根文件夹/conf/extra/)httpd-ssl.conf,修改如下(懒人方法复制粘贴,或者找到这几行然后修改):

Listen 443

SSLPassPhraseDialog  builtin

SSLSessionCache        "shmcb:${SRVROOT}/logs/ssl_scache(512000)"

SSLSessionCacheTimeout  300

<VirtualHost *:443>

    DocumentRoot "apache根目录\htdocs"

    ServerName 你的域名:443

    SSLEngine on

    SSLCertificateFile “网站证书位置"

    SSLCertificateKeyFile "网站密钥位置"

    #SSLCertificateChainFile "证书链文件位置"

</VirtualHost>

3 CA证书配置apache

参照上一节,去掉注释行的注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值