只需6步, 在apache2中使用ssl
- Posted at 2008/07/23 13:47
- Filed under - 技 术 -
当处在比较复杂的网络环境时, 传输敏感数据的时候就要考虑是否有被截获的可能了.
为Apache2 添加https支持可以简单的解决这个问题.
本文系原创, 然而有些代码取自网络(现在每网络不知道还能干啥了), 向那些代码的提供者表示感谢:)
实践环境: ubuntu8.04
1. 首先确认以下包有被安装:
2.打开SSL端口的支持
ssl的默认端口是443, 很好记, 就是444-1 ;)
打开apache2的端口配置文件:
那就不用改了. 这段设置的含义是, 监听80端口, 并且在有mod_ssl的时候监听443端口.
3.开启apache2的ssl支持
其实就是从可用的mod目录中拷贝一个mod到正在使用的mod目录, 使用以下命令:
4.生成证书.
使用openssl请求证书. 运行了之后填写向导中的每个问题, 其实都可以随便填啦:p, 然后会生成一个apache.pem文件, 这就是传说中的证书吧?
更改权限
5.建立www-root用来放网页
建在哪里个人爱好了. 比如
6.配置虚拟目录了
可以拷贝一份现在http服务的站点配置文件, 不过经常会装满东西. 还不如新建一个....
内容如下(建议简单了解一下这些都是干什麽的, 很通俗的英文):
然后修改原来的站点配置文件, 指明使用的端口:
前两行改成这样(就是添加80端口啦):
https://127.0.0.1
如图, 如果配置成功, 肯定会收到证书错误提示, 选择能继续下去的那个选项.
现在, 基本上你已经在用ssl加密连接访问web服务器了.

PS:注意目录权限问题, 否则很可能看到Forbidden的..... 具体就是www-root能不能被www-data用户访问到.
为Apache2 添加https支持可以简单的解决这个问题.
本文系原创, 然而有些代码取自网络(现在每网络不知道还能干啥了), 向那些代码的提供者表示感谢:)
实践环境: ubuntu8.04
1. 首先确认以下包有被安装:
$sudo apt-get install apache2 openssl(apache2的mod_ssl似乎是默认安装的)
2.打开SSL端口的支持
ssl的默认端口是443, 很好记, 就是444-1 ;)
打开apache2的端口配置文件:
$sudo gedit /etc/apache2/ports.conf看一下是否有443端口的定义. 如果是这样:
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
那就不用改了. 这段设置的含义是, 监听80端口, 并且在有mod_ssl的时候监听443端口.
3.开启apache2的ssl支持
其实就是从可用的mod目录中拷贝一个mod到正在使用的mod目录, 使用以下命令:
$sudo a2enmod ssl
4.生成证书.
使用openssl请求证书. 运行了之后填写向导中的每个问题, 其实都可以随便填啦:p, 然后会生成一个apache.pem文件, 这就是传说中的证书吧?
$sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 9999
更改权限
$sudo chmod 700 apache.pem; sudo chown www-data apache.pem好像可以不用~ 不过我的习惯啦~~
5.建立www-root用来放网页
建在哪里个人爱好了. 比如
$mkdir ~/www-secure
6.配置虚拟目录了
可以拷贝一份现在http服务的站点配置文件, 不过经常会装满东西. 还不如新建一个....
$sudo gedit /etc/apache2/sites-enabled/001-securesite
内容如下(建议简单了解一下这些都是干什麽的, 很通俗的英文):
NameVirtualHost *:443 #说明虚拟主机使用的端口. 这里不用虚拟主机所以前面是星号
<VirtualHost *:443> #同上
ServerSignature Off #猜这是干什麽的, 不告诉你~ on/off都可以
SSLEngine On #开ssl
SSLCertificateFile /home/你的用户名/apache.pem
ServerAdmin webmaster@localhost
DocumentRoot /home/你的用户名/www-secure/ #最后的/好像一定要的
<Directory /home/你的用户名/www-secure/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all #允许所有ip访问
</Directory>
</VirtualHost>
然后修改原来的站点配置文件, 指明使用的端口:
$sudo gedit /etc/apache2/sites-enabled/000-default
前两行改成这样(就是添加80端口啦):
NameVirtualHost *:80然后...然后...重载apache的配置, 或者重启apache吧
<VirtualHost *:80>
$sudo /etc/init.d/apache2 restart用浏览器打开
https://127.0.0.1
如图, 如果配置成功, 肯定会收到证书错误提示, 选择能继续下去的那个选项.
现在, 基本上你已经在用ssl加密连接访问web服务器了.

PS:注意目录权限问题, 否则很可能看到Forbidden的..... 具体就是www-root能不能被www-data用户访问到.
Posted by yoily
- Tag
- apache2, https, openssl, ssl, 原创, 证书
- Response
- No Trackback , No Comment
- RSS :
- http://thisisblog.com/rss/response/2