StartSSL可以申请1年免费的ss证书,此证书主流浏览器都被信任。纯为了装B,本站也申请并使用了ssl,我wp的后台就是启用了https连接https:///wp-admin,看着多么舒服啊 介绍下申请配置过程,我是在我的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启用成功!
|
|