手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Ubuntu下配置Apache HTTPS

[日期:2011-11-18] 来源:mike.org.cn  作者:mike [字体: ]

二、配置Apache

  1、开启SSL模块

a2enmod ssl

  2、启用SSL站点

a2ensite default-ssl

  3、加入监听端口

vi /etc/apache2/ports.conf 
 
#编辑Apache端口配置,加入443端口
Listen 443

  注:Ubuntu启用SSL站点后,缺省已经加入了

  4、配置虚拟主机

  编辑default-ssl文件,加入证书对应的主机头。

vi /etc/apache2/sites-enabled/default-ssl
 
ServerName www.mike.me

  5、配置SSL证书

  编辑配置文件,修改如下几行:

  如果是自签名证书,按如下配置:

vi /etc/apache2/sites-enabled/default-ssl
 
SSLEngine on
SSLCertificateFile    /etc/ssl/private/apache2.pem
#SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

  注:如果SSLCertificateFile中指定的证书已包含相应私钥,SSLCertificateKeyFile这一行就可以注释掉。前面用make-ssl-cert生成的证书就是同时包含公钥和私钥的,所以这里注释掉了。

  如果是第三方签署的CA证书,按如下配置:

SSLEngine on
SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLCertificateChainFile /etc/ssl/certs/server-ca.crt

  各指令含义:

  SSLEngine :这个指令用于开启或关闭SSL/TLS协议引擎。

  SSLCertificateFile:该指令用于指定服务器持有的X.509证书(PEM编码),其中还可以包含对应的RSA或DSA私钥。如果其中包含的私钥已经使用密语加密,那么在Apache启动的时候将会提示输入密语。

  SSLCertificateKeyFile:指定了服务器私钥文件(PEM编码)的位置。如果SSLCertificateFile指定的服务器证书文件中不包含相应的私钥,那么就必须使用该指令,否则就不需要使用。

  SSLCertificateChainFile:这个指令指定了一个多合一的CA证书,用于明确的创建服务器的证书链。这个证书链将被与服务器证书一起发送给客户端,由直接签发服务器证书的CA证书开始,按证书链顺序回溯,一直到根CA的证书结束,这一系列的CA证书(PEM格式)就构成了服务器的证书链。这有利于避免在执行客户端认证时多个CA证书之间出现混淆或冲突。

  6、测试Apache HTTPS

  重启Apache

/etc/init.d/apache2 restart

  使用curl来验证

curl https://localhost/ -k

  -k参数的意思是允许不验证访问SSL站点,因为如果要验证,就不能使用localhost做测试,而只能用生成证书时明确指定的域名。

  使用浏览器

  访问服务器时输入https://域名(或IP),浏览器会弹出安装服务器证明书的窗口。说明服务器已经支持SSL了。

  7、其它知识点

  在上面SSL站点配置文件中所使用的是”_default_”(默认虚拟主机),下面说下相关的知识点。

  ”_default_”(默认虚拟主机)虚拟主机可以捕获所有指向没指定的IP地址和端口的请求。比如:一个没被任何虚拟主机使用的地址/端口对。

  仅当没有其他虚拟主机符合客户端请求的IP地址和端口号时,”_default_”虚拟主机才会捕获这个请求。并且仅当”_default_”虚拟主机的端口号(默认值由您的Listen指定)与客户端发送请求的目的端口号相符时,这个请求才会被捕获。也可以使用通配符(例如:”_default_:*”)来捕获任何端口号的请求。

  服务器配置示例:

<VirtualHost _default_:443>
DocumentRoot /www/default
......
</VirtualHost>

  这段配置内容的意思是所有访问这个WEB服务器的443端口的请求会被这个默认虚拟主机处理。

  另外仅当客户端连接的目的IP地址和端口号没有指定而且不与任何一个虚拟主机(包括”_default_”虚拟主机)匹配的时候,才会用主服务器来伺服请求。换句话说,主服务器仅捕获没有指定IP地址和端口的请求。

linux
相关资讯       Apache  Ubuntu基础教程 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款