您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

配置Apache的ssl安全连接

添加时间:2015-8-8 1:48:34  添加: 思海网络 

第一步:生成ssl certficate文件
首先当然是正常安装apache2了,然后:

生成一个1024位的RSA私钥,并保存为/etc/apache2/ssl/apache.pem,如果你已经有了CA证书,应该也是可以拿过来直接使用,或者用来生成这个私钥的(这应该属于另外一个话题了,我也没有用过)。

apache2-ssl-certificate执行过程中要回答一些问题,如下,注意如果[]里已经给出了默认值,而你又想把这项置空的话,可以输入英文句号“.”:

State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:
Organization Name (eg, company; recommended) []:.
Organizational Unit Name (eg, section) []:.
server name (eg. ssl.domain.tld; required!!!) []:localhost
Email Address []:fwolf@mail.com

一般来说,server name和实际的网站域名还是保持一致比较方便。

第二步:启用ssl mod

或者

:/etc/apache2/mods-enabled$ sudo ln -s ../mods-available/ssl.load ssl.load

第三步:添加监听端口,配置虚拟主机
添加端口:在/etc/apache2/ports.conf中增加一行“Listen 443”,显然,如果你想让默认的80端口就使用ssl的话,就可以省略这一步了,并在后面的配置中略微调整。

在apache虚拟主机的配置文件conf中,段,添加SSL的定义,比如:

ServerAdmin Fwolf
ServerName www.fwolf.com

SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem

DirectoryIndex index.php index.html index.html.var

然后重启apache,就能够使用https访问网站了。

如 果想配置成80端口默认就使用https,首先不需要在ports.conf中添加443端口的监听了,其次是在配置VirtualHost的时候也不用 带上:443了,但即使这样,配置完成后使用http://www.domain.com访问配置好的网站时,还是会提示:

Bad Request

Your browser sent a request that this server could not understand.
Reason: You’re speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.

Hint: https://www.fwolf.com/

这 是由于使用http协议去访问一个https的端口造成的,最简单的解决方法是使用https://www.domain.com:80/来替代,不过, 通过修改apache配置,把到80端口的http访问重定向到443端口的https访问效果会更好一些,就像下面的配置:

<VirtualHost *:80>
Redirect permanent / https://localhost/

NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin Fwolf
ServerName www.fwolf.com

SSLEngine On SSLCertificateFile /etc/apache2/ssl/apache.pem ... 

这样所有http访问就自动被重定向到https访问上了,不过如果你只能在外网开一个端口的话就比较麻烦了,同时https也只能包含一个站点(无法通过ServerName辨识多个站点)。

如果能够把http和https协议同时绑定到一个端口上,用户访问的时候似乎就更方便了,不过很多地方都说这是不可能的,加密与明文协议不可能同时存在于一个端口上,这里有个讨论给出了一种方案,虽然经过我的实验并不成功,还是把代码贴出来,供有兴趣的朋友继续研究。

RewriteEngine on
RewriteCond %{HTTPS} != on
RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=permanent]
</IfDefine>

一个小问题:我生成的pem文件怎么有效期都只有一个月?难道这是默认的?pem文件到期之后会发生什么事情呢?

update @ 20070126

默认生成的pem文件确实只有一个月的有效期,过期之后倒是还能使用,只是在客户端会有一个提示证书无效的确认,所以在生成证书的时候,记得用-day x参数指定有效期限,比如十年什么的。

(当pem文件已经存在的时候,需要使用–force参数指定覆盖)

参考:
Need Apache2 SSL howto
Apache2 SSL
You’re speaking plain HTTP to an SSL-enabled server port. - HELP PLEASE !

Update @ 2007-07-31

Ubuntu 7.04 feisty中没有apache2-ssl-cerfiticate这个命令,需要自己下载一个包,然后解压,把里面的ssleay.cnf拷贝到/usr/share/apache2/,然后就可以执行解压的另外一个可执行文件apache2-ssl-certificate来生成证书了。

参见:

  • https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/77675

关键字:Apache、ssl、安全连接
分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站