ApusicSSL配置V22Word文档格式.docx
《ApusicSSL配置V22Word文档格式.docx》由会员分享,可在线阅读,更多相关《ApusicSSL配置V22Word文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
SSL/TLS握手协议通过互相发送证书来认证对方,一般来说只需要单向认证,即客户端能确认服务器便可。
但是对于对安全性要求很高的应用往往需要双向认证,以获得更高的安全性。
下面详细讲述建立自己的认证机构,并且利用它来颁发服务器证书和客户端个人证书,然后配置服务器来使用双向认证。
SSL协议使用不对称加密技术实现会话双方之间信息的安全传递。
可以实现信息传递的保密性、完整性,并且会话双方能鉴别对方身份。
不同于常用的http协议,我们在与网站建立SSL安全连接时使用https协议,即采用https:
//ip:
port/的方式来访问。
作用
SSL是允许对HTTP请求上的敏感数据加密的技术。
握手、加密和解密过程由Web服务器处理。
SSL协议的作用
IP安全协议/SSL/SSH内容:
SSL(SecureSocketLayer即安全套接层)协议是NetscapeCommunication公司推出在网络传输层之上提供的一种基于非对称密钥和对称密钥技术的用于浏览器和Web服务器之间的安全连接技术。
它是国际上最早应用于电子商务的一种由消费者和商家双方参加的信用卡/借记卡支付协议。
SSL协议支持了电子商务关于数据的安全性、完整性和身份认证的要求,但是它没有保证不可抵赖性的要求。
SSL层要点:
一、作用:
验证最终安全的应用层通信内容。
(加密)。
二、端口:
典型的运行在不同的上层应用的端口。
(不同服务需要配置不同端口+加密方法/压缩模式)。
三、验证:
证书及其签名的确认。
四、密钥:
认证(必要时双认证)后,通过随机数据和密钥交换协议,双方获得密钥或种子,完成加密操作。
SSL协议的主要用途是在两个通信应用程序之间提供私密性和可靠性,这个过程通过3个元素来完成:
(1)握手协议
(2)记录协议(3)警告协议
SSL协议支持三种方式的认证:
双方的相互认证,只认证服务端的认证和双方都不认证。
通过SSL协议的通信过程,SSL协议利用非对称加密算法产生和交换密码;
用对称加密算法对
数据进行加密传输。
注意:
1、KI协议是为产生密码和交换密码服务的体系,主要负责CA的管理。
2、TPS是SSL协议应用于HTTP服务
SSH协议:
解决TELNET/FTP协议安全性的工具,支持SSH和SFTP。
即就是Telent和FTP的加密
传输版本。
SSH具有SSH1和SSH2版本。
2、SSH技术安全验证问题:
基于口令和基于密钥验证的技术。
3、SSH机遇密钥验证的过程(服务器验证过程),保证了口令不在网络中传输。
SSL:
解决对应使用HTTP协议的服务安全性问题。
位于传输层和应用层之间,可以提供数据加密传输(不含签名)。
原理:
通过SSL握手交流信息,通过验证,获得密钥,对数据进行加密(属于IP数据包的数据部分)
SSH:
解决对应使用FTP/TELNET协议的服务安全性问题。
位于传输层和应用层之间,可以提供数据加密传输,可以签名。
涉及技术:
CA、PKI。
通过SSH握手交流信息(C/S访问模式),通过验证,获得密钥,对传输(交流)数据进行加密(属于IP数据包的数据部分),也可看为在系统间建立了加密传输通道。
原理
当我们与一个网站建立https连接时,我们的浏览器与WebServer之间要经过一个握手的过程来完成身份鉴定与密钥交换,从而建立安全连接。
具体过程如下:
用户浏览器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送到服务器。
服务器将其SSL版本号、加密设置参数、与session有关的数据以及其它一些必要信息发送给浏览器,同时发给浏览器的还有服务器的证书。
如果配置服务器的SSL需要验证用户身份,还要发出请求要求浏览器提供用户证书。
客户端检查服务器证书,如果检查失败,提示不能建立SSL连接。
如果成功,那么继续。
客户端浏览器为本次会话生成pre-mastersecret,并将其用服务器公钥加密后发送给服务器。
如果服务器要求鉴别客户身份,客户端还要再对另外一些数据签名后并将其与客户端证书一起发送给服务器。
如果服务器要求鉴别客户身份,则检查签署客户证书的CA是否可信。
如果不在信任列表中,结束本次会话。
如果检查通过,服务器用自己的私钥解密收到的pre-mastersecret,并用它通过某些算法生成本次会话的mastersecret。
客户端与服务器均使用此mastersecret生成本次会话的会话密钥(对称密钥)。
在双方SSL握手结束后传递任何消息均使用此会话密钥。
这样做的主要原因是对称加密比非对称加密的运算量低一个数量级以上,能够显著提高双方会话时的运算速度。
客户端通知服务器此后发送的消息都使用这个会话密钥进行加密。
并通知服务器客户端已经完成本次SSL握手。
服务器通知客户端此后发送的消息都使用这个会话密钥进行加密。
并通知客户端服务器已经完成本次SSL握手。
本次握手过程结束,会话已经建立。
双方使用同一个会话密钥分别对发送以及接受的信息进行加、解密。
2环境准备
所需软件包
⏹Apusic4.0.2
下载:
⏹JDK1.4.2
用途:
用来产生Apusic使用的秘钥对(keystore)。
⏹Openssl0.9.9.6
用来产生CA证书、签名并生成IE可导入的PKCS#12格式私钥。
http:
//www.openssl.org/
本章主要针对湖北省电子政务一期工程《应用支撑软件招标文件》中软件要求的内容,根据金蝶Apusic4.0的具体真实情况做出响应。
3配置步骤
建立认证授权机构CA
用户可以向可信的第三方认证机构(CA)申请证书,也可以自己做CA,由自己来颁发证书,在本文中将讲述如何自己做证书颁发机构。
本文所使用的CA软件为Openssl。
Openssl用来产生CA证书、证书签名并生成浏览器可导入的PKCS#12格式个人证书。
你可以在Openssl的官方网站http:
//www.openssl.org下载最新版的Openssl。
下面开始介绍建立认证授权机构CA和创建CA根证书:
1)下载并安装OpenSSL,配置两个环境变量,其中前者在安装过程中实现:
OPENSSL_CONF:
c:
\OpenSSL\bin\f
PATH:
C:
\OpenSSL\bin
2)在指定的目录下建立自己的CA目录,例如:
\OpenSSL\CA
\OpenSSL>
mkdirCA
3)登录到OpenSSL环境:
\OpenSSL\CA>
openssl
OpenSSL>
4)生成数字签名算法DSA参数
格式:
dsaparam-out[数字签名算法DSA参数输出路径][密钥位数]
例如:
dsaparam-outC:
/OpenSSL/ca/dsa_param1024
或者直接在命令环境执行:
openssldsaparam-outC:
5)根据参数生成DSA私钥
genrsa–out[密钥文件输出路径][数字签名算法DSA参数]
gendsa-outdsa_keydsa_param
opensslgendsa-outC:
/OpenSSL/ca/dsa_keyC:
/OpenSSL/ca/dsa_param
6)X509证书待签名请求
生成待签名的证书。
req-new-out[证书文件输出路径]-key[私钥文件路径]
req-new-outC:
/OpenSSL/ca/ca_req.csr-keyC:
/OpenSSL/ca/dsa_key
\>
opensslreq-new-outC:
7)创建X509自签名根证书
用CA私钥自签名。
[注]将自动生成的ca-key.srl文件拷贝到创建的CA目录下.。
x509-req-in[输入待签发证书文件路径]-out[产生x509证书文件输出路径]-signkey[自签发密钥文件路径]-days[证书有效期]-CA[签发跟证书]-Cakey[根证书密钥文件]-Cacreateserial[创建序列号]
x509-req-inca_req.csr-outca_cert.cer-signkeydsa_key
opensslx509-req-inC:
/OpenSSL/ca/ca_req.csr-outC:
/OpenSSL/ca/ca_cert.cer-signkeyC:
/OpenSSL/ca/dsa_key-days365
生成服务器端证书
服务器端证书用来向客户端证明服务器的身份,也就是说在SSL协议握手的时候,服务器发给客户端的证书。
生成服务器证书时用到了JDK的密钥管理工具Keytool,本文采用的jdk是sunj2dk1.4.2。
可以在Sun公司的网站下载j2sdk1.4.2。
[注]在本文中用符号"
%JDK_HOME%"
来表示JDK的安装位置,用符号"
%APUSIC_HOME%"
表示Apusic的安装位置。
3.1.1建立服务器证书
1)建立工作目录
在%JDK_HOME%的bin目录下建立自己的server目录,例如:
server
mkdirserver
2)创建服务器私钥
生成server密钥对。
%JDK_HOME%/bin/keytool-genkey-alias[密钥对别名]-validity[密钥有效期]-keyalg[密钥算法参数]-keysize[密钥位数]-keypass[密钥保护密码]-storepass[存储密码]-dname[别名相关附加信息]-keystore[密钥存储文件路径]
\>
keytool-genkey-aliasapusic_server-keyalgRSA-keysize1024-keypass12345678-storepass12345678-dname"
cn=localhost,ou=support,o=apusic,l=shenzhen,st=guangdong,c=CN"
-keystoreC:
/OpenSSL/server/my_key_store
\openssl\server>
dir
驱动器D中的卷是新加卷
卷的序列号是18FC-D2C1
C:
\apusic\apusic-4.0.2_\jre\bin\server的目录
2006-04-1910:
08<
DIR>
.
..
081,368my_key_store
1个文件1,368字节
2个目录1,772,150,784可用字节
\apusic\apusic-4.0.2_\jre\bin\server>
[注]-alias后的apusic_server是密钥对的名字可替换为自己需要的名字;
-keypass与-storepass后的changeit为保护密码必须6位,将其替换为你的密码即可;
-dname为包含的server信息。
其中cn是服务器的名字一定要与WEB服务器中设置的一样。
3)生成服务器证书请求
生成待签名证书。
%JDK_HOME%/bin/keytool-certreq-alias[证书别名]-sigalg[证书算法参数]-file[产生文件输出路径]-keypass[密钥保护密码]-keystore[存储文件路径]-storepass[存储密码]
keytool-certreq-aliasapusic_server-sigalgSHA1withRSA-fileC:
/OpenSSL/server/my_server.csr-keypass12345678-keystoreC:
/OpenSSL/server/my_key_store-storepass12345678
4)用CA私钥签名
发布服务器证书。
opensslx509-req-in[server/server.csr]-out[server/server-cert.pem]-CA[mageCA/ca-cert.pem]-CAkey[mageCA/ca-key.pem]-days365
/OpenSSL/server/my_server.csr-outC:
/OpenSSL/server/my_server-cert.cer-CAC:
/OpenSSL/CA/ca_cert.cer-CAkeyC:
/OpenSSL/CA/dsa_key-days365-set_serial02
Loading'
screen'
intorandomstate-done
Signatureok
subject=/C=CN/ST=guangdong/L=shenzhen/O=apusic/OU=support/CN=192.168.5.109
GettingCAPrivateKey
[注]先将生成的my_server.csr文件ftp到linux上openssl的目录下的server子目录中,ftp的传输模式应设为bin模式,以下同。
3.1.2将CA根证书和服务器证书导入Apusic
1)导入CA根证书
将根证书导入keystore。
将CA根证书(ca_cert.cer)ftp到Java工作目录下的ca子目录中
-import-v-trustcacerts-storepass[存储密码]-alias[证书别名]-file[证书文件路径]-keystore[导入文件路径]
keytool-import-aliasmy_ca_root-fileC:
/OpenSSL/CA/ca_cert.cer-noprompt-keypass12345678-storepass12345678-keystoreC:
[注]
此处的-storepass为默认的“changeit”。
-alias为CA根证书的别名。
2)导入服务器证书
%JDK_HOME%/bin/keytool-import-v-trustcacerts-storepasschangeit-aliasapusic_server-fileserver/server-cert.pem-keystoreserver/server_keystore
keytool-import-aliasapusic_server-fileC:
/OpenSSL/server/my_server-cert.cer-noprompt-keypass12345678-storepass12345678-keystoreC:
[注]此时的-storepass为生成证书时输入密码。
-alias为服务器证书的别名。
3)查看证书
查看CA证书
keytool-list-keystore%JDK_HOME%/jre/lib/security/cacerts
keytool-list-keystoreC:
或者
/OpenSSL/server/my_key_store-v-storepass12345678
4)把CA根证书导入信任库truststore:
keytool-import-aliascaroot-file..\ca\ca-cert.cer-noprompt-keypasskeypass-storepasskeypass-keystoretruststore
keytool-list-keystoretruststore-v-storepasskeypass
颁发并发布个人证书
个人证书用来向服务器证明个人的身份,也就是说在SSL协议握手的时候,客户端发给服务器端的证书。
同时个人证书中包含个人信息如用户名等,如果需要这个用户名将作为登录服务器的用户名。
⏹建立Client证书
1)openssl的apps目录下建立自己的Client目录,例如:
client
2)生成Client密钥对
创建RSA参数。
opensslgenrsa-outclient/my_client_key-key.pem1024
opensslgenrsa-outC:
/OpenSSL/client/my_client_key1024
3)生成待签名的证书
根据参数生成RSA私钥
opensslreq-new-outclient/client-req.csr-keyclient/client-key.pem
/OpenSSL/client/my_client_req.csr-keyC:
/OpenSSL/client/my_client_key
发布客户端证书
opensslx509-req-inclient/client-req.csr-outclient/client-cert.pem-signkeyclient/client-key.pem-CAca/ca-cert.pem-CAkeyca/ca-key.pem-CAcreateserial-days365
opensslx509-req-inmy_client_req.csr-outmy_client.cer-CAC:
\OpenSSL\CLIENT>
/OpenSSL/client/my_client_req.csr-outC:
/OpenSSL/client/my_client.cer-CAC:
subject=/C=CN/ST=guangdogn/L=shenzhen/O=apusic/OU=support/CN=qiuyilai/emailAddress=qiuyilai@
5)生成Client端可以导入的个人证书
生成PKCS#12格式证书。
opensslpkcs12-export-clcerts-inclient/client-cert.pem-inkeyclient/client-key.pem-outclient/client.p12
pkcs12[生成PKS12格式证书命令]-export[导出文件]-clerts[仅导出client证书]-in[输入的client证书文件路径]-inkey[client证书密钥文件路径]-out[导出PKS12格式文件路径]
openssl