SSL (Secure Socket Layer - 安全套接字层 )
功能:保障在 Internet 上数据传输之安全,利用数据加密 (Encryption) 技术,确保数据在网络上之传输过程中不会被截取及窃 听,防止篡改。
如何让我们的 WEB 应用程序应用 SSL 安全保障? 这里有两种方法,双向认证和单项认证。
单项认证
客户端向服务器发送信息时,会检查服务器的证书,如果是安全证书,则向服务器发送数据,如果不是,则不发送数据。
双向认证
也就是说,首先,客户端将要认证服务器的安全性,确保访问的是正确的服务器,而非假冒的钓鱼网站;其次,服务器也要认证客户端的安全性,只有那些拥有服务器授权证书的客户端才可以访问。
下面来说明下如何建立单项认证和双向认证
单项SSL认证
1.打开cmd ,输入d: 回车
2.输入md keys 回车
3.输入cd keys 回车
4.输入
keytool -genkey -alias keytest -keyalg RSA -keypass 123456 -storepass 123456 -keystore mykey.keystore -validity 3600
keytool命令如下:
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias 产生别名
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
-dname 指定证书拥有者信息
注意:上面的名字与姓氏要填 网站名称,如这里的locathost,不能是IP。
上面的命令创建了两个东西:
密钥库: 名称 keytest 密钥库密码123456
密钥: mykey.keystore 密码 123456
5.可以导出证书server.cer文件
keytool -export -trustcacerts -alias keytest -file server.cer -keystore mykey.keystore -storepass 123456
打开该证书文件,会有这样的信息
因为该证书是 localhost发给localhost,也就是自签名的,所以不被信任。
6.配置tomcat中conf下的server.xml文件
注意:据说不同的TOMCAT在此处的配置有所不同,我这里用的是tomcat-6.0.32
代码如下:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" enableLookups="true" disableUploadTimeout="true" acceptCount="100" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" sslProtocol="TLS" clientAuth="false" keystoreFile="D:\keys\mykey.keystore" keystorePass="123456" />
这里 clientAuth表示,服务器是否要验证客户端,由于是单向连接,所以连fasle。
keystoreFile 表示密钥地址
keystorePass 表示密钥密码
需要说明的是,修改TOMCAT的server.xml文件,如果是ECLIPSE中建的服务器,不会有效果,需要删除服务器重新建个服务器。
配置好后重启tomcat就可以访问
https://localhost:8443
由于此证书不被信任,所以会有上面的信息。
那么如何使证书受信任呢?这就需要专门的权威部门来签发给你证书。这些机构称为CA,由于CA的信息已经被集成在操作系统中了,所以这些颁发证书的CA机构是操作系统可信的。操作系统检测到证书的颁发者是可信的时候,就会信任此证书。
也可以自己充当CA机构来签发证书,该CA所签发的证书只能本机可信。过程如下:
1.首先将CA信息安装到操作系统,使操作系统对该CA可信。
安装server.cer到操作系统,过程默认。
2.使用该CA来签发证书。
可以使用openssl来签发数字证书,这里用的是JAVA程序来签发证书的。