以下将以www.example.com为例,演示在WDCP3的nginx+apache环境下如何为虚拟主机站点部署SSL;已实测的服务器环境最高CentOS7.3,WDCP3.0.9(3.2.X版本之后可直接在创建站点时上传证书文件开通SSL)。
安装WDCP3
如果需要挂载数据盘,可以参考此文章 https://bbs.aliyun.com/read/151152.html
挂载数据盘命令一览
查看数据盘 fdisk -l
格式化数据盘 mkfs.ext3 /dev/vdb
创建待挂载数据盘的目录 mkdir /www
挂载数据盘到目录 mount /dev/vdb /www/
修改分区信息 echo '/dev/vdb /www ext3 defaults 0 0' >> /etc/fstab
重启服务器 init 6
检查硬盘挂载情况 df -lh
以下通过官方推荐的方式安装WDCP3,注意在安装过程中需要选择web服务的架构方式,需要选择nginx+apache;如果没有选择nginx+apache也不要紧,可以在安装后通过“系统设置”进行调整。
wget http://dl.wdlinux.cn/files/lanmp_v3.tar.gz
tar zxvf lanmp_v3.tar.gz
sh lanmp.sh
WDCP默认账号
http://your_ip:8080
admin
wdlinux.cn
修改默认登录密码、创建站点等基本操作不再赘述,请根据具体情况进行配置。
如何获取SSL证书?
如果你使用的是阿里云,可通过主导航栏的“产品”→“安全”→“CA证书服务”或控制台的“CA证书服务”购买赛门铁克公司的SSL证书;如果你使用的是GoDaddy,可以直接通过主导航栏的“WEB 安全”-“SSL证书”购买。
需要注意的是,沃通公司的安全证书由于安全事故被包括谷歌、火狐在内的多种浏览器取消了信任,请务必谨慎选用!
准备证书文件
通过你选择的服务商,下载nginx环境下使用的证书文件;分别将后缀为.key和.pem的证书文件命名为com_example.key和com_example.pem。
上传证书文件
通过导航栏的“系统管理”→“文件管理”,进入“/www/wdlinux/nginx-1.8.1”文件夹(根据wdCP版本的不同,该Nginx文件夹名称可能不同,选择当前版本的文件夹即可),在该文件夹下新建一个名为“sslkey”的文件夹,该文件夹将用来存放所有该虚拟主机上运行的站点的证书文件;
在该文件夹下新建“com_example”文件夹,该文件夹将存储www.example.com的SSL证书;
将前述两个SSL证书文件上传到该文件夹。
修改nginx配置
进入“文件管理”,打开相应站点的配置文件(例如“ /www/wdlinux/nginx/conf/vhost/example.com.conf”),并参考下方示例修改该文件内容,该示例文件将完成两项任务:第一,配置通过https方式访问当前站点;第二,将通过http发来的请求强制转发到https,以保障整站的安全性,从而实现无缝转换,并且最大程度上阻断中间人攻击。修改前建议将原文件内容保存好,以备还原。具体配置文件内容示例如下,配置你的站点时请相应修改粗体部分。
server {
listen 80;
server_name example.com example.cn www.example.com www.example.cn;
rewrite ^/(.*) https://www.example.com/$1 permanent; #强制转发非https请求到https
}server {
listen 443;
ssl on;
server_name example.com example.cn www.example.com www.example.cn;
root /www/web/com_example/public_html;
ssl_certificate /www/wdlinux/nginx/sslkey/com_example/com_example.pem;
ssl_certificate_key /www/wdlinux/nginx/sslkey/com_example/com_example.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
index index.html index.php;
error_page 400 /errpage/400.html;
error_page 403 /errpage/403.html;
error_page 404 /errpage/404.html;
error_page 503 /errpage/503.html;
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location ~ /\.ht {
deny all;
}
location / {
try_files $uri @apache;
}
location @apache {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
}
开放443端口
通过“安全管理”→“防火墙(iptables)”;
点击右侧页面的“增加规则”,在该设置页面的“目标端口”项填写443,其它全部留空后点击“确定”;
点击“保存”(如果不保存的话,可能引起重启服务器后出现https页面无法访问的问题)。
重启web服务(nginx+apache)
“系统管理”→“服务重启”,点击右侧页面的“web”下方的“重启”。
至此对于www.example.com域名的SSL证书配置已经全部完成,在浏览器中打开该网站时根据证书等级不同将在地址栏显示一个小锁,或证书所属企业的名称。此处以逛车城 为例演示效果:
API域名也想配置SSL证书?
如果想要配置SSL证书的域名是api.example.com的话,只需在sslkey文件夹下新建api_example文件夹,并将按照同样规则进行命名的证书文件放入该文件夹后完成其它步骤即可;admin.example.com等其它域名等SSL配置依此类推即可。