为网站配置SSL

作者:hack1990 时间:12-08-12 阅读数:536人阅读

 从StartSll申请免费的SSL证书,该网站只支持IE,FireFox,Opera,Safari浏览器,并且注册成功后是以证书来登陆.

注册地址:https://www.startssl.com/?app=12
注:注册过程中不要关闭浏览器.
第一步:填写注册信息,注意地址需要详细.如果地址信息不全,会人工发邮件给你,让你发详细地址给他们.
第二步:在第一步提交之后会发激活码到注册邮箱,到邮箱里取激活码激活.
第三步:通过激活码激活后,会再发登陆地址和激活码.通过邮箱中的链接进行登陆证书的安装.
三步走完之后即可添加证书,一般我们用在网站上,就需先添加域名(添加域名会验证域名所有者,会发验证码到域名注册邮箱),如下图:

验证域名通过后,即可创建证书,点击Certificates Wizard进入创建证书,选择Web server

接着设置证书密码,密码是用来解私钥的,最小10位最大32位,只能用英文字母和数字,生成证书后会提示保存密钥,将公私密钥保存下来后即可使用在网站上.

注:上面生成的KEY是带有密码的,用在服务器上时,每次启动Nginx或Apache时都会提示让你输入KEY密码,可通过下面两种方法将密码去除:

1.使用openssl去除密码:

 

 

# openssl rsa -in ssl.key -out ssl.key

 

2.使用StartSSL的工具去除:

点击Tool Box在边边找到Decrypt private key,按提示把KEY粘贴进去输入密码即可得到没有带密码的KEY.

 

使用OpenSSL生成SSL证书

1.首先确认安装有OpenSSL,并且能够执行.

2.创建一个RSA私钥(三倍-DES加密,PEM格式)

 

 

# openssl genrsa -des3 -out server.key 1024

 

去除密钥密码:

 

 

# openssl rsa -in server.key -out server_nopass.key

 

或直接创建不带密码的密钥:

 

 

openssl genrsa -out server.key 1024

 

3.通过RSA私钥文件来创建一个未签署的证书请求文件(PEM格式,CSR)

# openssl req -new -key server.key -out server.csr

通过以上步骤,你已经有了一个证书请求文件(CSR),你可以将此文件发送给一个认证机构来进行认证,当然会等一段时间并且花上一些钱.或者通过自己的CA认证机构来进行认证.

 

CA签署server证书

1.为你的CA创建一个RSA私钥(三DES加密并且是PEM格式)

 

 

# openssl genrsa -des3 -out ca.key 1024

 

或创建非加密的PEM格式的私钥

 

 

# openssl rsa -in ca.key -out ca_nopass.key

 

2.创建一个自签名的证书文件(X.509 结构,输出为PEM格式)

 

 

# openssl req -new -x509 -days 365 -key ca.key -out ca.crt

 

3.通过CA签署证书

 

 

# openssl x509 -req -days 30 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

 

Tips:如果未创建CA中心证书,可通过下面命令签署服务器证书:

 

 

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out  server.crt

 

在生产环境中应将CSR证书发送到一个CA认证返回真正的证书,或付费申请证书,自己生成的证书一个是不受浏览器信任,一个是安全性问题.

 

Nginx SSL配置

 

# vi /path/conf/nginx.conf

 

添加

 

 

server {

......

listen 443;

ssl on;

ssl_certificate /path/nginx/ssl/server.crt;

ssl_certificate_key /path/nginx/ssl/server_nopass.key;

......

}

 

Apache SSL配置

 

# vi /path/conf/httpd.conf

 

添加

 

 

......

listen 443

......

 

 

# vi /path/conf/extra/httpd-vhost.conf

 

 

<VirtualHost _default_:443>

   ......

   SSLEngine On 

   SSLCertificateFile conf/ssl/server.crt 

   SSLCertificateKeyFile conf/ssl/server.key 

   #SSLCertificateChainFile conf/ssl/ca.crt // 暂未启用 

   ......

</VirtualHost>

 

Tomcat SSL配置

在tomcat的server.xml中添加一个新的connector添加以下内容:

 

 

<Connector  port="8443" maxHttpHeaderSize="8192"  

SSLEnabled="true"

maxThreads="150"  

minSpareThreads="25"  

maxSpareThreads="75"  

enableLookups="false"  

disableUploadTimeout="true"  

acceptCount="100"  

scheme="https"  

secure="true"  

clientAuth="false"  

sslProtocol="TLS"  

keystoreFile="/conf/server.jks"  

keystorePass="XXXXXX"  

algorithm="SunX509"  

/>  

 

注:keystoreFile对应server端的jks文件,keystorePass对应其密码.

 

 

发表评论