一台服务器配置多台ssl虚拟主机,同ip多域名虚拟主机SSL如何配置-SNI

1、Server Name Indication(服务器名称指示)

以前一直听说基于域名的虚拟主机上只能使用同一张证书以配置SSL,其他域名会提示证书错误,或者去购买昂贵的多域名证书,直到无意中看到linode的文章:

服务器名称指示(Server Name Indication 简称 SNI)是一个扩展的TLS计算机联网协议,这允许在握手过程开始时通过客户端告诉正在连接的服务器的主机名称。允许在相同的IP地址和TCP端口号的服务器上使用多个证书,而不必所有网站都使用同一个证书。在概念上等同于HTTP/1.1基于域名的虚拟主机,只不过这是在HTTPS上实现的。

直接上设置:

1、编辑openssl.cnf(Debian 和 Ubuntu系统可以在/usr/lib/ssl/openssl.cnf找到),在HOME条目前加入

SAN="email:support@yoursite.org"

修改yoursite.org以匹配你的域名

2、在[ v3_req ] 和[ v3_ca ]节后面加上subjectAltName=${ENV::SAN} 该语句指示OpenSSL,如果电子邮件地址默认支持的SSL证书没有提供其它的替代名称,环境变量“SAN”将被读取,以获得应视为有效新证书备用DNS名称的列表。(拗口) 3、服务器shell提示符下输入 export SAN="DNS:www.firstsite.org, DNS:firstsite.org, DNS:www.secondsite.org, DNS:secondsite.org" 声明你希望的证书中包含的域名,为方便起见,这里包括每个站点基础域(这样可以防止用户不输入“www”的部分,否则将发生错误)。

4、

apt-get update

apt-get upgrade

apt-get install openssl

mkdir /etc/ssl/localcerts

#发出以下命令生成证书本身。请注意,此命令应该在一行上发出

openssl req -new -x509 -sha256 -days 365 -nodes -out /etc/ssl/localcerts/apache.pem -keyout /etc/ssl/localcerts/apache.key

#生成证书请求文件

openssl req -new -key /etc/ssl/localcerts/apache.key -out /etc/ssl/localcerts/apache.csr

#不建议输入密码,否则apache启动时会让输入密码,比较麻烦,当然也可以搞定。

5、访问https://startssl.com/ 依次进行域名认证(Validations Wizard)、证书签发(Certificates Wizard),会获得证书链(1_root_bundle.crt)和证书(2_www.yoursite.org.crt),有效期一年。其实startssl本身免费证书支持5个域名!

6、设置apache

SSLEngine On

......

ServerAdmin support@example.com

ServerName www.yoursite.org

ServerAlias yoursite.org

DocumentRoot /var/www/yoursite.org/ssl/

SSLCertificateFile /etc/ssl/localcerts/2_www.yoursite.org.crt SSLCertificateKeyFile /etc/ssl/localcerts/apache.key SSLCertificateChainFile /etc/ssl/localcerts/1_root_bundle.crt

LogLevel warn

ErrorLog /var/www/yoursite.org/log/error_ssl.log

CustomLog /var/www/yoursite.org/log/access_ssl.log combined

其他虚拟主机同上设置。

在服务器端 openssl 支持SNI,编译的时候要加上–enable-tlsext,不过从 0.9.8j 版本开始编译的时候默认会加。

证书申请成功

81a176282e089a4033fad5ea91aa4531.png

7、SSL安全设置

#禁用 SSLv2 and SSLv3,防止POODLE漏洞。

SSLProtocol All -SSLv2 -SSLv3

#使用安全的Cipher

SuiteSSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH

#如果想兼容XP/IE6 ,请使用以下的配置

Cipher SuiteSSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

也可以如下设置

SSLCipherSuite ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL

这么多格式,也没有像支付宝有那么多需要保密数据,随他了。

Forward Secrecy & Diffie Hellman Ephemeral Parameters ,如果你用的 Apache 2.4.8以上  OpenSSL 1.0.2 或以上版本,可以运行以下命令

cd /etc/ssl/localcerts

openssl dhparam -out dhparam.pem 4096然后将以下代码添加到网站配置文件 SSLOpenSSLConfCmd DHParameters "/etc/ssl/localcerts/dhparam.pem"

慎用,我apache2.4.7直接跑到cpu100%

最后我们的apache主配置文件可能是下面这样的,你也许要到/etc/apache2/mods-enabled/ssl.conf文件里面找到如下设置。

......

SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

SSLHonorCipherOrder on

SSLCompression off

SSLProtocol All -SSLv2 -SSLv3SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4

......

8、

不要忘记重启apache

sudo service apache2 reatart

2、一时手痒,服务器基本被百度机器人搞死,想想也是,李世石都不是对手。以下是apache日志节选

4ac97604f89de9ebb33b98713cffba06.png

/access.log

183.60.235.17 - - [11/Mar/2016:15:42:30 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

183.61.236.16 - - [11/Mar/2016:15:42:30 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

117.34.28.13 - - [11/Mar/2016:15:42:31 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

(此处略去114666条......)

119.167.246.14 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

117.27.149.14 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

183.61.236.16 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

117.34.28.14 - - [14/Mar/2016:20:23:03 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

183.60.235.17 - - [14/Mar/2016:20:23:04 +0800] "GET /archives/ HTTP/1.1" 200 11297 "-" "Baidu-YunGuanCe-SLABot(ce.baidu.com)"

User-Agent:Baidu-YunGuanCe-SLABot(ce.baidu.com) 可用性检测User-Agent:Baidu-YunGuanCe-ScanBot(ce.baidu.com) 安全检测User-Agent:Baidu-YunGuanCe-PerfBot(ce.baidu.com) 速度检测User-Agent:Baidu-YunGuanCe-VSBot(ce.baidu.com) 认证服务

来源:

3、i’m coming back.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值