`
wangshiyang
  • 浏览: 66449 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何在webogic中布署ssl完整教程

 
阅读更多
1.产生证书请求
1.1概念:
产生用户自己的请求,一般需要有一个密钥对,用户使用密钥对中的密钥去产生一个certificaterequirement(证书请求)我们在此将它称作“csr”文件。
一般产生请求的方式有两种:
openssl与keytool两种工具:
openssl的特点:
先产生密钥对,再通过密钥对产生csr文件。
keytool的特点:
产生csr文件的同时产生密钥对。
当csr文件产生后,我们打开csr文件,可以看到这样的一段内容:
-----BEGIN CERTIFICATE REQUEST-----
MIIB3TCCAUYCAQAwgYUxCzAJBgNVBAYTAmNuMQswCQYDVQQIEwJzaDELMAkGA1UE
BxMCc2gxETAPBgNVBAoTCFRvcGNoZWVyMREwDwYDVQQLEwhyZXNlYXJjaDERMA8G
A1UEAxMIcmVzZWFyY2gxIzAhBgkqhkiG9w0BCQEWFHl1YW4ubWtAdG9wY2hlZXIu
Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/iyAIUZ8S80u9OWSvCU0N
ifK0sRHaNrYXqLdrtzUDSLX2wYtU0x1W0dOA1196ZkaG5Tx+0gyjtFHkwwnIa949
nKiwWxIgi+puB9wC315aPo1tFrNNnuEcQ3bukT6SHKE7kx39gFypJ3NIuJxQ7ZS3
BS8VLkTGN9tg4TZBIHNo3wIDAQABoBcwFQYJKoZIhvcNAQkHMQgTBjExMTExMTAN
BgkqhkiG9w0BAQUFAAOBgQBXBwbuVo9SDrEiAR2rpVhsRLovch4e8SiX1c8MC/RO
nuFmwJogY1t7nmW2KyE5YZhZFGoqe9sYs5w/YyJV2X7nbEGgYu91jfx6YpXFtQSk
qAo0NgSkMzIsD5Yg6jJeCD2jT4w0ONiZ4JXyVsE0rUZPgJhhVrHPXU8m5/RgvBLY
mQ==
-----END CERTIFICATE REQUEST-----
将这堆内容提交给CA中书,CA中书会根据这堆内容签出证书。
下面我们分边来看用openssl和keytool是如何产生请求的。
1.2详细指令:
openssl:
openssl genrsa -des3 -out server.key 1024
-----------------以上为产生密钥对,使用rsa算法,密钥长度为1024
openssl req -new -key server.key -out server.csr
-----------------根据密钥对产生csr文件
keytool:
keytool –genkey –alias testkey –keyalg RSA –keysize 1024 –dname “CN=200.31.23.71, OU=Support, O=SGE, L=shanghai, S=SH, C=CN” –keypass 888888 –keystore testkey.jks –storepass 888888
-----------------可以看到用keytool产生csr文件的同时还产生了密钥对
keytool –certreq –alias support –sigalg “MD5withRSA” –file server.csr –keypass 888888 –keystore testkey.jks –storepass 888888
2.通过CA中心得到证书
2.1概念
CA中心一般位于网上如“verisign”或企业内部有CA中心,CA中心打开的页面中一般有一些企业或个人信息注册信息等的填写表单,填完这些表单后还有一堆是要你提交你的证书请求,请用文本编辑器把我们产生的“csr”文件打开,看到如下内容:
-----BEGIN CERTIFICATE REQUEST-----
MIIB3TCCAUYCAQAwgYUxCzAJBgNVBAYTAmNuMQswCQYDVQQIEwJzaDELMAkGA1UE
BxMCc2gxETAPBgNVBAoTCFRvcGNoZWVyMREwDwYDVQQLEwhyZXNlYXJjaDERMA8G
A1UEAxMIcmVzZWFyY2gxIzAhBgkqhkiG9w0BCQEWFHl1YW4ubWtAdG9wY2hlZXIu
Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/iyAIUZ8S80u9OWSvCU0N
ifK0sRHaNrYXqLdrtzUDSLX2wYtU0x1W0dOA1196ZkaG5Tx+0gyjtFHkwwnIa949
nKiwWxIgi+puB9wC315aPo1tFrNNnuEcQ3bukT6SHKE7kx39gFypJ3NIuJxQ7ZS3
BS8VLkTGN9tg4TZBIHNo3wIDAQABoBcwFQYJKoZIhvcNAQkHMQgTBjExMTExMTAN
BgkqhkiG9w0BAQUFAAOBgQBXBwbuVo9SDrEiAR2rpVhsRLovch4e8SiX1c8MC/RO
nuFmwJogY1t7nmW2KyE5YZhZFGoqe9sYs5w/YyJV2X7nbEGgYu91jfx6YpXFtQSk
qAo0NgSkMzIsD5Yg6jJeCD2jT4w0ONiZ4JXyVsE0rUZPgJhhVrHPXU8m5/RgvBLY
mQ==
-----END CERTIFICATE REQUEST-----
将所有的内容包括“BEGIN CERTIFICATE REQUEST”和“END CERTIFICATE REQUEST”都复制进去,然后提交给CA中心,这时CA中心通常会给你一封email或直接打开一个网页,网页中或email内有如下内容:
-----BEGIN CERTIFICATE-----
MIICgzCCAewCCQCvViySyayvfTANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMC
Y24xCzAJBgNVBAgTAnNoMQswCQYDVQQHEwJzaDERMA8GA1UEChMIVG9wY2hlZXIx
ETAPBgNVBAsTCHJlc2VhcmNoMREwDwYDVQQDEwhyZXNlYXJjaDEjMCEGCSqGSIb3
DQEJARYUeXVhbi5ta0B0b3BjaGVlci5jb20wHhcNMDcwOTAzMDU0MjI4WhcNMTcw
ODMxMDU0MjI4WjCBhTELMAkGA1UEBhMCY24xCzAJBgNVBAgTAnNoMQswCQYDVQQH
EwJzaDERMA8GA1UEChMIVG9wY2hlZXIxETAPBgNVBAsTCHJlc2VhcmNoMREwDwYD
VQQDEwhyZXNlYXJjaDEjMCEGCSqGSIb3DQEJARYUeXVhbi5ta0B0b3BjaGVlci5j
b20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL+LIAhRnxLzS705ZK8JTQ2J
8rSxEdo2theot2u3NQNItfbBi1TTHVbR04DXX3pmRoblPH7SDKO0UeTDCchr3j2c
qLBbEiCL6m4H3ALfXlo+jW0Ws02e4RxDdu6RPpIcoTuTHf2AXKknc0i4nFDtlLcF
LxUuRMY322DhNkEgc2jfAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAcje3Y7aA6hYM
MfV8F3MXJufdVFj25X6SIyUac4giWGOasFDUwEdRCnJjDw4zQfNPa+j0P3DRPiSG
Gjd2ziOh9l6A3gqr02uzGTj3G/INLGrTvez9uLyKLlA89pyYF7dkBol8jqpu+C+b
25NIjNDf6lmiVUNhfUN3H5T0Y7dYxQc=
-----END CERTIFICATE-----
这就是根据我们提交的请求生成的证书,把该内容用文本编辑器全部复制下来,用文本编辑器存成一个叫“server.crt”的证书文件(即crt文件)。
2.2重要信息
此时我们申请的证书有了,但还不够,因为我们要把证书装到weblogic里,这个证书只能起到“标明(identity)的作用”,它还需要有一张“根(root)证书”去告诉weblogic,这个identity是得到了谁的信任(trust)。
因此,我们仔细在CA中心的网站上找一下,我们可以发觉一个类似于叫“root ca/trust ca”的选项,通过这个选项,我们又可以打开一个网页,看到如下的内容:
-----BEGIN CERTIFICATE-----
MIICgzCCAewCCQCvViySyayvfTANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMC
Y24xCzAJBgNVBAgTAnNoMQswCQYDVQQHEwJzaDERMA8GA1UEChMIVG9wY2hlZXIx
ETAPBgNVBAsTCHJlc2VhcmNoMREwDwYDVQQDEwhyZXNlYXJjaDEjMCEGCSqGSIb3
DQEJARYUeXVhbi5ta0B0b3BjaGVlci5jb20wHhcNMDcwOTAzMDU0MjI4WhcNMTcw
ODMxMDU0MjI4WjCBhTELMAkGA1UEBhMCY24xCzAJBgNVBAgTAnNoMQswCQYDVQQH
EwJzaDERMA8GA1UEChMIVG9wY2hlZXIxETAPBgNVBAsTCHJlc2VhcmNoMREwDwYD
VQQDEwhyZXNlYXJjaDEjMCEGCSqGSIb3DQEJARYUeXVhbi5ta0B0b3BjaGVlci5j
b20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAL+LIAhRnxLzS705ZK8JTQ2J
8rSxEdo2theot2u3NQNItfbBi1TTHVbR04DXX3pmRoblPH7SDKO0UeTDCchr3j2c
qLBbEiCL6m4H3ALfXlo+jW0Ws02e4RxDdu6RPpIcoTuTHf2AXKknc0i4nFDtlLcF
LxUuRMY322DhNkEgc2jfAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAcje3Y7aA6hYM
MfV8F3MXJufdVFj25X6SIyUac4giWGOasFDUwEdRCnJjDw4zQfNPa+j0P3DRPiSG
Gjd2ziOh9l6A3gqr02uzGTj3G/INLGrTvez9uLyKLlA89pyYF7dkBol8jqpu+C+b
25NIjNDf6lmiVUNhfUN3H5T0Y7dYxQc=
-----END CERTIFICATE-----
把这段东西全部复制下来用文本编辑器存存成一个叫“ca.crt”的crt文件,这就是我们CA中心的trust证书。
注:
CA中心对于rootca的内容是不需要任何请求与认证就可以随意获取得,这
个信息是对一切人员公开的。
3.将证书信息导入jks文件
3.1概念
现在我们手头有了这些文件:
证书请求秘钥对:testkey.jks文件
证书请求:server.csr 文件
根据请求被认证的证书:server.crt文件
CA公开的rootca:ca.crt文件。
(如果使用openssl的话我们还会有server.key密钥文件)
?何为将证书信息导入我们的jks呢
weblogic中实现SSL需要有两个jks文件而不是crt文件,这两个jks文件一个用于identity(server.crt中的内容),一个用于对identity进行trust(ca.crt),但是weblogic中只认jks格式,而不认crt格式。
3.2重要信息
我们是用testkey这个jks文件产生证书请求server.csr的文件,然后再根据server.csr文件得到server.crt文件的,因此,testkey.jks文件里面已经含有证书请求信息了,我们现在要将得到认证的证书作为信任域导入到server.crt中就可以了,那么我们马上就开始导吧!根据keytool教程,我们用keytool –import –trustcacert就可以导了?可以直接这样吗?回答是:错误。
?错在什么地方了呢
根据“SSL证书申请流程图.jpg”中的指示,我们的server.crt文件是来自CA中心对我们的请求的认证,换句话说,server.crt中主要含有下面两样东西:
Ø ca中心用自己的公钥对我们请求的认证
Ø ca中心用自己的私钥对这张证书进行的数字签名(签名盖章/合格猪肉)
那么,除了证书中的信息是来自于我们的server.csr(请求)文件外,还有什么能证书这张证书是来自于我们的请求的呢?难道只凭肉眼看到的信息来证书,这张证书是来自于某个特定的请求吗?计算机可不这么认为,一切对计算机而言都是数字的,因此当我们直接把server.crt导入testkey.jks文件对我们的请求进行“信任”操作时,计算机屏幕就会报以下这个错误:
unable to eastablish chain from reply
“无法从回复中建立起证书链”,OK,问题出现了,根据“SSL证书申请流程图.jpg”图中,我们看到,申请证书的请求与证书之间的“链”断了,那么现在的问题就是我们要去“补”这个“链”。
?如何补链
答案就在“rootca”证书中,rootca证书ca.crt文件中的内容就是用于认证我们刚才提交请求的公钥内容。
OK,把这条公钥导入我们的testkey.jks中,再把server.crt证书内容导入我们的testkey.jks文件中,这样server.crt通过ca.crt中的公钥不就能建立起一条“从请求到-认证”的链了吗?
下面我们开始导入,使用keytool命令。
3.3详细指令
keytool –import –alias rootca –trustcacerts –file ca.crt –keystore testkey.jks –storepass 888888
------------------------按回车后根据提示键入[y]
导入rooca的信息至我们产生请求时用的jks文件“testkey.jks”。
keytool –import –alias testkey –trustcacerts –file server.crt –keystore testkey.jks –storepass 888888
------------------这边的-alias后的别名必须和我们产生请求时用的别名一致
将我们的认证证书“server.crt”文件内容导入testkey.jks文件。
最后我们要产生对“identity”进行“trust”的rooca,键入如下命令
keytool –import –alias rootca –trustcacerts –file ca.crt –keystore ca.jks –storepass 888888
系统产生一个新的文件ca.jks文件。
我们用以下命令来检查我们的jks文件内容
keytool –v –list –keystore testkey.jks
我们看到了如下的信息
Keystore 类型: jks
Keystore 提供者: SUN
您的 keystore 包含 3 输入
别名名称: rootca
创建日期: 2007-9-3
输入类型: trustedCertEntry
Owner: EMAILADDRESS=xxx@topcheer.com, CN=research, OU=research, O=Topcheer,
L=sh, ST=sh, C=cn
发照者: EMAILADDRESS=xxx@topcheer.com, CN=research, OU=research, O=Topcheer
, L=sh, ST=sh, C=cn
序号: af562c92c9acaf7d
有效期间: Mon Sep 03 13:42:28 CST 2007 至: Thu Aug 31 13:42:28 CST 2017
认证指纹:
MD5:48:31:ED:ED:DD:E4:5F:91:67:AC:B9:E4:69:47:15:3A
SHA1: DF:E2:52:C1:96:E8:B7:6E:BF:74:C4:93:BF:D0:40:B4:3B:55:9A:CF
*******************************************
*******************************************
别名名称: testkey
创建日期: 2007-9-3
输入类型:KeyEntry
认证链长度: 1
认证 [1]:
Owner: CN=hp, OU=Topcheer, O=research, L=shanghai, ST=SH, C=CN
发照者: CN=hp, OU=Topcheer, O=research, L=shanghai, ST=SH, C=CN
序号: 46dba98c
有效期间: Mon Sep 03 14:28:28 CST 2007 至: Sun Dec 02 14:28:28 CST 2007
认证指纹:
MD5:6C:6F:1E:53:C3:90:DF:85:21:99:50:C8:1E:45:8D:D6
SHA1: 9F:81:FF:86:DE:D1:7C:66:4D:5F:FC:2C:F5:A0:80:05:C1:97:7E:52
*******************************************
*******************************************
别名名称: testkey
创建日期: 2007-9-3
输入类型: trustedCertEntry
Owner: CN=hp, OU=Topcheer, O=research, L=shanghai, ST=SH, C=CN
发照者: EMAILADDRESS=yuan.mk@topcheer.com, CN=research, OU=research, O=Topcheer
, L=sh, ST=sh, C=cn
序号: 948cdbb67ee36665
有效期间: Mon Sep 03 14:29:59 CST 2007 至: Thu Aug 31 14:29:59 CST 2017
认证指纹:
MD5:58:B5:11:16:1A:CA:BC:80:76:A7:8D:E1:12:AA:0C:EA
SHA1: 84:DF:E5:97:62:30:62:60:99:FD:3F:AD:AA:D5:5C:40:4D:AC:28:52
*******************************************
*******************************************
通过以上的内容我们可以看到三块内容:
rootca的公钥
testkey的keyentry
用于对请求认证的trustentry内容
4.没有CA中心的情况下产生自签来制作ssl
1.概念
现在有一种情况,对于一些uat的机器我们需要基于ssl的环境去做uat,因此我们不可能花钱(verisign要上百美金一个哦),那么我们就自己创造CA中心来签我们自己产生的请求。
CA中心主要实现下面三件事:
Ø 对于任何证书请求(必须为X509格式的证书)进行签证
Ø 产生自己的rootca
Ø 公开自己的rootca(里面只放私钥)
在这边,我们需要用于两种工具。
1)openssl,用于产生ca证书和签证证书请求
2)jdk的keytool,用于产生证书请求和将生成的的证书导入成jks文件。
下面我们来看一个完整的过程
2.详细指令
2.1产生rootca的私钥
openssl genrsa -des3 -out ca.key 1024
2.2产生rootca的请求
openssl req -new -key ca.key -out ca.csr
2.3产生rootca的证书
openssl x509 -req -days 3650 -signkey ca.key-in ca.csr -out ca.crt
2.4用keytool产生一个请求
keytool –genkey –alias testkey –keyalg RSA –keysize 1024 –dname “CN=200.31.23.71, OU=Support, O=SGE, L=shanghai, S=SH, C=CN” –keypass 888888 –keystore testkey.jks –storepass 888888
2.5将产生请求时生成的testkey.jks文件导成server.csr(证书请求文件)
keytool –certreq –alias support –sigalg “MD5withRSA” –file server.csr –keypass 888888 –keystore testkey.jks –storepass 888888
2.6用rootca去对证书请求进行签证
openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -days 3650 -CAcreates
erial -sha1 -trustout -CA ca.crt -CAkey ca.key -days 3650 -CAserial ca.srl -sha1 -trustout
2.7将证书导入jks中的信用域
keytool –import –alias rootca –trustcacerts –file ca.crt –keystore testkey.jks –storepass 888888
keytool –import –alias testkey –trustcacerts –file server.crt –keystore testkey.jks –storepass 888888
keytool –import –alias rootca –trustcacerts –file ca.crt –keystore ca.jks –storepass 888888
2.8设置weblogic
把这两个文件给weblogic用于SSL设置(详细请看verisign权威 SSL+WEBLOGIC进阶视频教程.swf文件)。
注:
该视频文件位于verisign的官方网站上,以下为永久网址:
http://support.bea.com/askbea_soln/attachments/S-22841/Configure_Keystore_SSL_WLS81_viewlet_swf.html
5.关于在weblogic中配置完了ssl后如何用脚本停止的问题
当在Weblogic中配置成功了ssl后即7001端口关闭7002端口打开后,无法用原有stopWebLogic.sh停止Weblogic的进程的问题,解决如下:
编辑stopWebLogic.sh。
在最后一行,你可以看到
%JAVA_HOME%/bin/java -cp %WEBLOGIC_CLASSPATH% weblogic.Admin FORCESHUTDOWN -url %ADMIN_URL% %UIDPWD% %SERVER_NAME% 2>&1
这样一句话
请在 %JAVA_HOME%/bin/java -cp %WEBLOGIC_CLASSPATH%后加入
Dweblogic.security.TrustKeyStore=CustomTrust
Dweblogic.security.CustomTrustKeyStoreFileName="/bea/ssl/testkey.jks"
加入完后整条语句看起来应该如下所示
%JAVA_HOME%/bin/java -cp %WEBLOGIC_CLASSPATH% -Dweblogic.security.TrustKeyStore=CustomTrust -Dweblogic.security.CustomTrustKeyStoreFileName="/bea/ssl/testkey.jks" weblogic.Admin FORCESHUTDOWN -url %ADMIN_URL% %UIDPWD% %SERVER_NAME% 2>&1
然后把stopWebLogic.sh中的
ts://169.181.242.35:7002
改成
t3s://主机名:7002
注:
此处必须填写主机名,因此你在产生证书请求时,在-dname "CN="处,一
定要填入主机名,假设您的主机名为“HPUNIX”,那么在产生证书请求时在
“CN=”后填入您的主机名,要不,在stopWebLogic.sh去停带有ssl的
Weblogic的domain时,会报一个“证书中的主机名与脚本中的主机名不匹
配”的这样的一个错误。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics