阿里云购买证书(按需购买)
这次买的是类型为专业版OV ssl、品牌GeoTrust,、多个域名
邮件提醒:
选择验证方式:
1、DNS验证,在域名解析控制台中添加一条txt解析记录
2、文件验证,需要保存txt文本文件,在web服务器站点下创建隐藏目录,最后访问链接可以看到内容即可
emmm,我当然是选择了添加DNS验证,收到记录值后:
控制台中找到云解析DNS,对购买的域名进行解析配置,配置与反馈的邮件内容一致
再次等待,直至开通成功,在云盾证书服务控制台,选择下载,选择服务器类型,此处我需要配置nginx
在Nginx的安装目录下创建cert目录,并且将下载的全部文件拷贝到cert目录中。如果申请证书时是自己创建的CSR文件,请将对应的私钥文件放到cert目录下并且命名为a.key;
根据需要在.conf文件中添加或更改配置:
server {
listen 443;
server_name xxx.com www.xxx.com; # 需要配置的域名
ssl on;
root xxx; # 自己的项目位置
index index.html index.htm;
ssl_certificate cert/a.pem; # 放置的.pem文件的位置
ssl_certificate_key cert/a.key; # 放置的.key文件的位置
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
配置完成后,运行:
/usr/local/ninx/sbin/nginx -t
返回错误,nginx: [emerg] unknown directive "ssl"
说明需要编译ssl模块(完成后一定要记得关闭再重新打开,我没有这样做绕了很大的弯。。)
查看nginx编译安装时的命令,安装了哪些模块和nginx版本
/usr/local/nginx/sbin/nginx -V
会显示如下信息:
nginx version: nginx/1.7.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
configure arguments:
在nginx解压目录下执行
cd /usr/local/nginx-1.1.10
./config --with-http_ssl_module
前提是已经安装好了openssl,
然后使用命令
make
切勿 make install, 会覆盖安装目录
将原来 nginx 备份
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
将新的 nginx 覆盖旧安装目录
cp objs/nginx /usr/local/nginx/sbin/nginx
如报错:cannot create regular file
,可将nginx关闭后再次运行该命令,或执行cp -rfp objs/nginx /usr/local/nginx/sbin/nginx
再次测试nginx是否正确 /usr/local/ninx/sbin/nginx -t
然后重启 /usr/local/nginx/sbin/nginx -s reload
兴冲冲的去访问https://www.xxx.com,,无响应!
回来监测一下443端口:lsof -i:443
没有,开始测试,将server中的配置的ssl_certificate 路径改错,测试nginx有报错,证明的确执行到了这个server里。
再去看一下是不是有防火墙的关系
iptables -L -n
返回如图:
nginx -t也的确没有错误信息啊,忽然像起来最初入行查错时大神问我的话,log日志有报错吗
嘤········
查看nginx下的logs,发现:
缺少http_ssl_module模块?!!!命名不是添加过了吗,再次查看现在已安装的模块
nginx version: nginx/1.7.7
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
configure arguments: --with-http_ssl_module
添加成功了呀,emmm,好久以后拿着死马当活马医的心态,我关闭了nginx /usr/local/nginx/sbin/nginx stop
再重新打开 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
啧啧啧,报错信息没有了,再次访问网址,成功请求。
额,还有一个插曲no "ssl_certificate" is defined
,我配置中是有的呀,为啥类,定睛一看,上一行的index后丢了分号;
,啊!温柔!