分享

网站使用startssl免费证书 | RS

 高瑞祥 2013-11-18

StartSSL可以申请1年免费的ss证书,此证书主流浏览器都被信任。纯为了装B,本站也申请并使用了ssl,我wp的后台就是启用了https连接https:///wp-admin,看着多么舒服啊
WP后台SSL

介绍下申请配置过程,我是在我的vps上操作的,linux系统。为域名生成证书请求文件和密钥.需要生成2048位加密的证书请求:

openssl req -new -newkey rsa:2048 -nodes -out ssl.csr -keyout ssl.key

内容不用填写一路回车,执行cat ssl.csr查看里面的内容复制备用。

现在去申请账号过程不多说了,申请是地址要写的详细些容易通过,startssl是通过证书登录的,所以要下重装系统以后还能登录申请号账号后继续使用要备份下startssl的证书。登录后要先验证域名所有权,点击左边的Validations Wizard输入域名验证。

验证完成后点击Certificates Wizard选择Web Server SSL/TLS Certificate出现Generate Private Key页面Skip跳过

在Submit Certificate Request (CSR)页面粘贴之前cat ssl.csr里的内容,继续出现Certificate Request Received页面

再继续选择刚刚验证过的域名,下一步是添加个子域名,一般是www(子域名证书可以无限申请的)

继续直到Save Certificate页面,保存其中内容为server.crt,和ssl.csr放到vps同一目录。

完成这些申请证书完成。此证书现在在firefox中还是不能够被信任的,还要startssl的根证书与我们的合并才能使用:

wget http://cert./certs/ca.pem
wget http://cert./certs/sub.class1.server.ca.pem
cat ca.pem sub.class1.server.ca.pem >> ca-certs.crt
cat ca-certs.crt >> server.crt

把server.crt和ssl.key放到服务合适的文件夹内,待使用。ok,最后就是配置服务器了,这里我以nginx为例

修改Nginx的域名配置文件,我使用的是lnmp一键包,位置在/usr/local/nginx/conf/vhost里,复制80端口的配置复制到最后面,再做修改如:

server
	{
		listen       443;
		server_name 你的域名;
		index index.html index.htm index.php default.html default.htm default.php;
		root  /home/wwwroot;
		ssl    on;
		ssl_certificate    /usr/local/nginx/conf/certs/server.crt;
		ssl_certificate_key     /usr/local/nginx/conf/certs/ssl.key;
		ssl_session_timeout 5m;
		ssl_protocols SSLv2 SSLv3 TLSv1;
		ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
		ssl_prefer_server_ciphers   on;
		location ~ .*\.(php|php5)?$
			{
				try_files $uri =404;
				fastcgi_pass  unix:/tmp/php-cgi.sock;
				fastcgi_index index.php;
				include fcgi.conf;
				fastcgi_param   HTTPS on;
			}

		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
			{
				expires      30d;
			}

		location ~ .*\.(js|css)?$
			{
				expires      12h;
			}

		access_log off;
	}

别忘记添加fastcgi_param   HTTPS on;保存修改,重启nginx

/etc/init.d/nginx restart

一般情况下nginx能正常重启,并且SSL证书可以正确配置,但是有时会出现下面的错误提示:

[emerg]: SSL_CTX_use_certificate_chain_file("/usr/local/nginx/conf/certs/server.crt")
 failed (SSL: error:0906D066:PEM routines:PEM_read_bio:bad end line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib)
configuration file /usr/local/nginx/conf/vhost/xxx.conf test failed

这个的意思就是server.crt读取到意外错误行,这是因为之前我们合成证书导致的,使用vi或者nano命令打开并编辑server.crt,找到了问题所在:

-----END CERTIFICATE----------BEGIN CERTIFICATE-----

可以看到原先占用一行的标记证书的分隔符,现在连到一起了,我们需要用换行将他们分开,注意问题左右的短横线最好一样多:

-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----

保存这个crt文件,再次重启nginx,SSL启用成功!

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多