There are questions remain, We'll search for the answers together. But one thing we known for sure,the future is not set!

【原创文章】开启WDINLUX WDCP 双引擎系统网站的HTTPS访问支持

系统防护 百蔬君 2177℃ 已收录 0评论

自从google宣布友好支持https之后,很多依靠google的站长都开始对网站ssl加密重视起来,特别是在google推广中要求购物网站的用户登录和付款页面必须使用https加密协议之后,很多依赖google的站长必须得给网站开通https访问。

对于国内很多linux用户来说,wdlinux和wdcp系统还是非常流行的,今天刚好遇到了这个问题,必须要mark一下,以备后用。那么今天简单介绍一下给wdcp的多网站系统开通https的方法。

WDCP的网站运行环境一般情况下,我们使用的是nginx和apache双引擎系统,即nginx处理前端,apache处理后端,采用的mysql数据库。我们要开通https给用户访问,那么开通nginx环境的https访问就ok了。

开通https访问首先需要一个创建我们的相关证书,首先需要在我们的服务器生成crs请求证书

openssl genrsa -des3 -out www.baishujun.com.key 1024
openssl req -new -key www.baishujun.com.key -out www.baishujun.com.csr
openssl rsa -in www.baishujun.com.key -out www.baishujun.com.nopass.key
openssl x509 -req -days 365 -in www.baishujun.com.csr -signkey www.baishujun.com.nopass.key -out www.baishujun.com.crt

第一行是生成我们的服务器私钥,即key文件,在这里说明一下,有的ssl网站要求是2048位的。

第二步是生成我们的csr文件,这个文件就是我们需要提交到ssl网站去申请ssl证书的签名文件,生成这个文件,有几个注意的地方,第一个就是国家名只能是两个字母,并且是大写!省份城市照实写就好了,另外一个需要注意的地方就是common name需要填写您的域名或者ip之类的,email就可以留空了。
把这个生成的crs文件下载下来,复制里面相关的内容,提交给ssl网站,ssl网站就会根据这个签名文件生成根域名证书,等等文件,但是这里,我们就需要这个根域名证书就好了。
Snap1

第三句的意思是去掉生成的私钥key的密码,不然每次重启nginx都需要手动输入密码,那将是一个非常烦人的事情了,如果设定自动重启的话,那么将无法完成了。在这里需要提醒一句的是,要按照顺序来执行,有了第一步的key才能生成第二步的csr。

沃通的免费证书已经关闭了,可以去腾讯云:https://console.qcloud.com/ssl或者startsll:https://www.startssl.com/申请免费SSL的crt证书。

说到这里,得推荐一个免费的ssl申请网站,沃通CA免费SSL证书http://www.wosign.com/Products/free_SSL.htm,使用这个申请免费ssl相当方便,如果使用它,那么前面的所有工作都免了,只要你登陆这个网站,绑定域名,他会自动给你把私钥key,根域名证书统统生成好,如果是中文ssl证书,无须审核,马上提交就马上发放证书了,相当滴快递,免去了自己生产key和ssl给的证书不匹配的问题。我就遇到过这个情况,始终不匹配,让人烦死了。但是也如网站所推荐,这类免费的ssl证书可能并不适合电子商务网站,电子商务网站还是推荐EV SSL证书。

沃通SSL证书比较人性化的一点是,他会把各种环境的ssl都一次性的给你生成打包出来,下载后你根据自己的情况选择就好了。
Snap2

我们把nginx目录中的文件上传到wdcp,这里是1_www.baishujun.com_bundle.crt和2_www.baishujun.com.key

自己建立一个目录,专门用来放ssl文件,比如/www/ssl/。

现在来配置我们网站,wdcp的网站配置文件都是位于/www/wdlinux/nginx/conf/vhost下面,比如我的网站配置文件就是/www/wdlinux/nginx/conf/vhost/baishujun.com.conf

server {
listen 80;
server_namebaishujun.com www.baishujun.com;
root /www/web/baishujun_com_daieidkdiii/public_html;
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 405 /errpage/405.html;
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location / {
try_files $uri @apache;
}
location @apache {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
}

在listen 80;下面添加4行代码

listen 443 ssl;
ssl_certificate /www/ssl/2_www.baishujun.com.key;
ssl_certificate_key /www/ssl/1_www.baishujun.com_bundle.crt;
ssl_session_timeout 5m;

这样配置文件baishujun.com.conf就成了

server {
listen 80;
listen 443 ssl;
ssl_certificate /www/ssl/2_www.baishujun.com.key;
ssl_certificate_key /www/ssl/1_www.baishujun.com_bundle.crt;
ssl_session_timeout 5m;
server_namebaishujun.com www.baishujun.com;
root /www/web/baishujun_com_daieidkdiii/public_html;
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 405 /errpage/405.html;
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location / {
try_files $uri @apache;
}
location @apache {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
}

对于这个文件的修改当然可以用vi直接编辑,但是文字较多,输入麻烦,个人建议不要使用wdcp后台文件管理的文件编辑功能,很容易出现编码错误的问题。推荐从wdcp的”系统管理-文件管理“这里下载下来,然后用emeditor来编辑,然后上传上去,先用cp命令做一个备份,然后cp过去把原来的conf文件覆盖掉。

做好了这个工作之后,一定要在wdcp后台的“安全管理-防火墙(iptables)”,里面添加规则,目标端口443,其它都不管,开通443端口,这是ssl使用的端口,然后一定记得点击保存,不然重启又没了。

做好了这些之后,那么我们重启一下服务器,或者单独重启http和nginx。命令如下

service httpd restart
service nginxd restart

如果看到结果是绿色的ok,那么说明配置就成功了,如果是红色的failed,那么多半情况就是key和crt不匹配,好好检查吧。

 

 

20170111,针对WWDCP,更新一个主要问题。

我们前面为了开启SSL,修改的配置文件是/www/wdlinux/nginx/conf/vhost/baishujun.com.conf 。对于WDCP的系统来说,这里面存在一个较大的问题,那就是在后台对这个网站进行任何配置,那么这个我们手动修改的内容就全部没有了。需要再配置一次。

今天摸索了一下,其实这个443端口的加载不一定非得在虚拟主机的配置文件种加载,我们可以直接在nginx.inf中加载,删除掉baishujun.com.conf 种443 server语句块,把这个语句块放到/www/wdlinux/nginx/conf/nginx.conf 的http中,

http {
    include       mime.types;
    default_type  application/octet-stream;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 22m;
    limit_conn_zone $binary_remote_addr zone=one:32k;

    sendfile        on;
    tcp_nopush     on;

    keepalive_timeout  60;
    tcp_nodelay on;

    gzip  on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    log_format  wwwlogs  '$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
    #include default.conf;
    include vhost/*.conf;

server {
listen 443 ssl;
server_name baishujun.com www.baishujun.com;
ssl_certificate /www/ssl/2_www.baishujun.com.key;
ssl_certificate_key /www/ssl/1_www.baishujun.com_bundle.crt;
ssl_session_timeout 5m;

root /www/web/baishujun_com_daieidkdiii/public_html;
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 405 /errpage/405.html;
location ~ \.php$ {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
location / {
try_files $uri @apache;
}
location @apache {
proxy_pass http://127.0.0.1:88;
include naproxy.conf;
}
}

}

转载请注明:百蔬君 » 【原创文章】开启WDINLUX WDCP 双引擎系统网站的HTTPS访问支持

喜欢 (8)or分享 (0)

您必须 登录 才能发表评论!