以下哪位大神没有参与能告诉我这是什么情况?

SSL-用Keytool和OpenSSL生成和签发数字证书_静思止语吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:2贴子:
SSL-用Keytool和OpenSSL生成和签发数字证书
J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密钥、证书和证书链。Keytool工具的命令在JavaSE6中已经改变,不过以前的命令仍然支持。Keytool也可以用来管理对称加密算法中的密钥。最简单的命令是生成一个自签名的证书,并把它放到指定的keystore文件中:keytool -genkey -alias tomcat -keyalg RSA -keystore c:/mykey如果c:/mykey文件不存在,keytool会生成这个文件。按照命令的提示,回答一系列问题,就生成了数字证书。注意,公共名称(cn)应该是服务器的域名。这样keystore中就存在一个别名为tomcat的实体,它包括公钥、私钥和证书。这个证书是自签名的。&o:p&&/o:p&Keytool工具可以从keystore中导出证书,但是不能导出私钥。对于配置apache这样的服务器,就不太方便。这种情况下就完全用OpenSSL吧,上一篇文章《SSL-用OpenSSL生成证书文件》中已经做了介绍。不过keytool对于J2EE AppServer是很有用的,它们就是用keystore存储证书链的。keystore的作用类似于windows存放证书的方式,不过跨平台了,^_^下面用Keytool生成CSR(Certificate Signing Request),并用OpenSSL生成CA签名的证书。1.
在bin目录下新建目录 demoCA、demoCA/certs、demoCA/certs
、 demoCA/newcerts2)
在demoCA建立一个空文件 index.txt3)
在demoCA建立一个文本文件 serial, 没有扩展名,内容是一个合法的16进制数字,例如 00004)
配置环境变量PATH,加入%JAVA_HOME%/bin,本文用的JavaSDK1.62.
生成CA的自签名证书openssl req -new -x509 -keyout ca.key -out ca.crt -f3.
生成server端证书1)
生成KeyPair生成密钥对 keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456
-storepass 123456 -keystore server_keystore
输入common name时,要和服务器的域名保持一致。2)
生成证书签名请求keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore 3)
用CA私钥进行签名,也可以到权威机构申请CA签名。
openssl ca -in tomcat_server.csr -out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -f
其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。4)
导入信任的CA根证书到keystore
keytool -import -v -trustcacerts
-alias my_ca_root -file ca.crt -storepass 123456 -keystore server_keystore5)
把CA签名后的server端证书导入keystorekeytool -import -v -alias tomcat_server -file tomcat_server.crt -storepass 123456 -keystore server_keystore6)
查看server端证书
keytool -list -v -keystore server_keystore
可以看到tomcat_server的证书链长度是2 4.
生成client端证书1)
生成客户端CSR
openssl genrsa -des3 -out tomcat_client.key 1024openssl req -new -key tomcat_client.key -out tomcat_client.csr -f2)
用CA私钥进行签名,也可以到权威机构申请CA签名openssl ca -in tomcat_client.csr -out tomcat_client.crt -cert ca.crt -keyfile ca.key -notext -f3)
生成PKCS12格式证书openssl pkcs12 -export -inkey tomcat_client.key -in tomcat_client.crt -out
tomcat_client.p124)
使用Keytool列出pkcs12证书的内容:
keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12
贴吧热议榜
使用签名档&&
保存至快速回贴6174人阅读
weblogic(15)
&&& 在数字证书使用过程中,会遇到签发证书问题,一般来说,有3个解决方法:
&&&&1.交由受信任的第三方证书颁发机构签名;
&&&&2.自签名;
&&&&3.自制CA证书并用其签名。
&&&&对于上线运营的网站来说,第一个方案是首选,因为只有这样浏览器才不会报警。过去买证书很贵,现在倒是有免费的了,比如IE和Firefox都支持的StartSSL。
&&&&不同的证书颁发机构对于证书生成多少都会有自己的要求,所以本文主要讨论后两种方案。
&&&&下面用OpenSSL生成CA签名的证书,用Keytool生成CSR(Certificate Signing Request)。
&&1)在工作目录下新建目录 demoCA、demoCA/private、demoCA/newcerts
&&2) 在demoCA建立一个空文件 index.txt
&&3) 在demoCA建立一个文本文件 serial, 没有扩展名,内容是一个合法的16进制数字,例如 0000
&&4) 配置环境变量PATH,加入%JAVA_HOME%/bin,本文用的JavaSDK1.6
二、生成CA的自签名证书
&&&&openssl req -new -x509 -keyout ca.key -out ca.cer -days 3650 -f
&&&&req命令表示创建证书,new参数表示创建私钥而不是从已存在的文件中读取,nodes参数表示不加密私钥。如果不添加nodes参数,以后每次使用私钥时都必须输入密码(如Apache每次重启)
f在openssl压缩包的share目录下
输入证书信息时,Country Name填入CN,Common Name输入单位名称,即最后显示的颁发者
三、生成server端证书
&&&&这步使用的是JDK的keytool工具
1)&&&&生成KeyPair生成密钥对
keytool -genkeypair -alias server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456&&-storepass 123456 -keystore server.keystore
&&输入common name时,要和服务器的域名保持一致。
2)&&&&生成证书签名请求
keytool -certreq -alias server -sigalg MD5withRSA -file server.csr -keypass 123456 -storepass 123456 -keystore server.keystore
四、使用OpennSSL签发证书
&&&&openssl ca -in server.csr -out server.cer -cert ca.cer -keyfile ca.key -notext -f
&&其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。
在签名时,如果报“The stateOrProvinceName field needed to be the same in the CA certificate”,是因为在openssl.cfg中的policy_match里面的前三个都选了match,修改成
stateOrProvinceName = optional
organizationName = optional
五、导回签发后的证书
&&1) 导入信任的CA根证书到keystore
&& keytool -importcert -v -trustcacerts&&-alias ca_root -file ca.cer -storepass 123456 -keystore server.keystore
&&2) 把CA签名后的server端证书导入keystore
keytool -importcert -v -alias server -file server.cer -storepass 123456 -keystore server.keystore
&&3) 查看server端证书
&& keytool -list -v -keystore server.keystore&&
可以看到tomcat_server的证书链长度是2
报failed to update database
TXT_DB error number 2
产生的原因是:
This thing happens when certificates share common data. You cannot have two certificates that look otherwise the same.
修改demoCA下 index.txt.attr,将
unique_subject = yes 改为
unique_subject = no
删除demoCA下的index.txt,并再touch下
rm index.txt&&
touch index.txt&&
将 common name设置成不同的
单独生成私钥
openssl genrsa -des3 -out class1.key
生成请求文件
openssl req -new -days 365 -key class1.key -out class1.csr -f
如果运行签发的证书再做为CA,那么在ca签名时加上
-extensions v3_ca
转自:/Look.aspx?ID=5123
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1275559次
积分:11872
积分:11872
排名:第940名
原创:211篇
转载:271篇
评论:135条
(2)(4)(9)(14)(8)(9)(16)(6)(8)(5)(9)(8)(4)(5)(6)(6)(6)(4)(3)(1)(6)(8)(9)(6)(4)(4)(12)(6)(15)(8)(6)(1)(2)(3)(5)(28)(6)(1)(4)(2)(1)(3)(1)(3)(2)(2)(2)(2)(3)(2)(4)(7)(10)(3)(15)(19)(3)(5)(6)(3)(3)(4)(5)(3)(5)(6)(6)(5)(4)(3)(1)(13)(10)(6)(1)(2)(1)(4)(2)(13)(4)(1)(2)(1)(4)(4)(3)(3)(5)(2)用openssl生成SSL使用的私钥和证书,并自己做CA签名
&本文记叙的是一次基于SSL的socket通讯程序开发中,有关证书,签名,身份验证相关的步骤。 我们的场景下,socket服务端是java语言编写的,客户端是c语言。使用了一个叫做matrixssl的c语言库。自己做CA签名,不等同于&自签名&。 自签名的情况,RSA的公钥私钥只有一对,用私钥对公钥证书做签名。而我们的场景是,自己做CA,有一个CA的公钥私钥对。 而socket的服务端也有一个公钥私钥对。 用CA的私钥对socket服务端的公钥证书做签名。
openssl genrsa -out ca.key 1024
(这里我们没有用des3加密。 可以增加一个-des3参数加密,详情可以man genrsa)&
openssl req -new -x509 -days 36500 -key ca.key -out ca.crt
(这一步的时候需要在提示之下输入许多信息,包括国家代码,省份,城市,公司机构名等)&
生成server端的私钥key:
openssl genrsa -out server.key 1024
生成server端的req文件(这一步生成的req文件,包含公钥证书,外加身份信息,例如国家,省份,公司等。用它提交给ca,让ca来对它做签名 ):
openssl req -new -key server.key -out server.csr
用CA的私钥对server的req文件做签名,得到server的证书:&
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
(注:如果第一次使用openssl,报告一些相关的文件找不到之类的错误,可能需要先执行2个命令:touch /etc/pki/CA/index.txt 和 echo '01' & /etc/pki/CA/serial)&
以上得到的server.crt就是服务端的证书文件。(有很多软件中需要各种不同证书存储格式,可能需要各种转换。 如PEM, P12等,我们的场景下也需要一点转换,下文会描述。刚开始做这些的同学可能会觉得证书,以及格式等非常的混乱。 这个时候能做的就是冷静下来,耐心的理清楚TLS, RSA等原理, 多看看openssl的man文档)&
不知道把ca.crt叫做CA的证书文件是否妥当,但是可以确定的是,客户端使用ca.crt可以校验server的身份。server在SSL/TLS握手的过程中会下发自己的证书,而这个证书是经过CA签名的。CA签名的时候使用的是CA自己的私钥,而ca.crt则包含了CA的公钥,可以用于检验这一签名,以确认是否是自己签的名。
服务端需要使用的文件是:server私钥(key), server证书。&
客户端需要使用的文件是:CA file(ca的证书,用以验证server下发的证书)
我们的server端使用java, 使用p12(PKCS12)格式的证书。使用openssl可以进行格式转换:&
openssl pkcs12 -export -clcerts -in server.crt -inkey server.key -out server.p12
可以看到输出的server.p12中应该包含了server.key和server.crt的内容。
我们的c语言客户端直接使用CA文件: ca.crt.
我们也用java写过客户端, java使用CA文件格式为 jks。那么可能需要一个转换,这里使用的是java的bin目录下的keytool:&
keytool -importcert -alias CA -file ca.crt -keystore ca.jks
转换的时候要求输入一个密码。这样就把ca.crt转换为了 ca.jks格式。
下面附上部分socket服务端和java版的客户端的代码。c的就不贴了,用的matrixssl。
java服务端(mina)代码片段:
String file = &/file/path/server.p12&;
String keyType = &PKCS12&; char[] password = &passwd&.toCharArray();
KeyStore ks = KeyStore.getInstance(keyType);
ks.load(new FileInputStream(file), password);
KeyManagerFactory kmf = KeyManagerFactory.getInstance(
KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, password);
SSLContext ctx = SSLContext.getInstance(&TLS&);
ctx.init(kmf.getKeyManagers(), null, null);
SslFilter sslFilter = new SslFilter(ctx); // 在mina的acceptor中增加这个filter就可以了。
acceptor.getFilterChain().addLast(&ssl&, new SslFilter(createSslContext()));[1]&&&
【声明】:黑吧安全网()登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱,我们会在最短的时间内进行处理。
上一篇:【】【】openssl 创建ssl证书 -
- ITeye技术网站
博客分类:
前段时间接触webservice,需要建立基于ssl的webservice以保证安全性,并要提供数字的支持。关于这部分以前没有搞过,经过摸索总算有些收获。现在把我的一些经验share一下。一、 数字证书的相关准备 关于数字证书部分我是用openssl做的,也是个开源的软件,前不久刚刚发布了1.0版本(做了11年才正式发布,由衷的佩服,老外真是有股哏劲)。网上很多文章介绍用java自带的keytool命令完成,我没有试过,不过看文章介绍好像keytool没有CA认证的功能。下面开始数字证书相关操作。
1. 下载、安装openssl(好像是废话) Openssl建议大家用1.0版本,毕竟是正式版本。我用的时候正式版还没出来,当时用的是OpenSSL 0.9.8m,不要用OpenSSL 0.9.8h这个版本(有个bug,会影响到后面的操作)。安装后从命令行进入安装目录下的bin目录。Ready! GO!。
2.创建CA的私钥 执行以下命令openssl genrsa -des3 -out ../demo/ca/ca.key 1024demo是我的工作目录,接下来会提示你输入密码,后面用到的密码会很多,最好都认真记下来。
3.创建CA证书 openssl req -new -x509 -key ../demo/ca/ca.key -out ../demo/ca/ca.crt -days 365x509是一种加密的标准,-out是指输出的文件路径,-key是指定私钥,也就是上一步生成的那个,-days是指证书有效期。注:再输入common name时你可以指定你自己的名字,但是不能输入你的服务器名(www.)
4.创建server端的私钥 因为咱们是要在server端提供SSL的webservice,所以在server端需要使用私钥库和信任库。openssl genrsa -des3 -out ../demo/server/server.key 1024
5.创建server证书签名请求 我们可以发送签名请求到一个官方的CA机构,这些机构都是要收费的,而且还要严格审核,至于我们自己开发过程中的话实在是没必要。我们直接发送到我们刚才通过openssl构建的CA就可以了。openssl req -new -key ../demo/server/server.key -out ../demo/server/server.csr注意这里的common name,此处填写你的服务器的ip或者域名,例如localhost,也就是你要为哪台服务器做证书就指定那台机器。
6.CA签署server证书 如果是第一次通过CA签署证书的话,执行如下命令openssl x509 -req -days 30 -in ../demo/server/server.csr -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAcreateserial -out ../demo/server/server.crt其中的-CAcreateserial是指创建一个新的序列文件。这样openssl会在当前目录下创建一个名为ca.srl的文件存储序列号(官方是这样说的,我本地产生的序列文件是.srl,搞不清怎么回事,可能是创建时没指定名字吧,不过不影响后面的操作)。下次再次签署证书时就可以直接指定这个序列文件了。命令如下:openssl x509 -req -days 30 -in ../demo/server/server.csr -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAserial .srl -out ../demo/server/server.crt输入CA私钥的密码后签署成功。
7.创建server端的pkcs12文件 openssl pkcs12 -export -in ../demo/server/server.crt -inkey ../demo/server/server.key -out ../demo/server/server.p12 -name demo_server注意其中的-name demo_server,这个是指定keystore的别名,记下来,很重要哦(weblogic要用到,网上的资料都没有这个参数,害得我weblogic配置时费老了劲了)。
8.转换pkcs12为JKS keystore文件 这个过程需要用到jetty.jar,下载相应jar后添加到classpath,然后执行如下命令java org.mortbay.util.PKCS12Import ../demo/server/server.p12 ../demo/server/server.jks在此处输入上一步设置到export password。Server端相关文件就完成了,现在可以用java的keytool命令查看一下生成的server.jks的内容keytool -v -list -keystore ../demo/server/server.jks接下来开始准备client端的相关文件,因为我们启用了数字证书的机制,client在通过webservice访问server时也需要提供自己的证书,也就是server和client相互认证(客户要求的,唉)。客户端的相关操作与server端类似,不做过多说明。
9.创建client端的私钥 openssl req -new -newkey rsa:1024 -nodes
-out ../demo/client/client.req -keyout ../demo/client/client.key
10.创建client端证书签名请求 openssl x509 -CA ../demo/ca/ca.crt -CAkey ../demo/ca/ca.key -CAserial .srl -req -in ../demo/client/client.req -out ../demo/client/client.pem -days 365
11.创建client端的pkcs12文件 openssl pkcs12 -export -clcerts -in ../demo/client/client.pem -inkey ../demo/client/client.key -out ../demo/client/client.p12 -name
12.创建client端的jks文件 java org.mortbay.util.PKCS12Import ../demo/client/client.p12 ../demo/client/client.jks
13.创建信任密钥库 这次用到java的keytool命令keytool -genkey -alias dummy -keyalg RSA -keystore ../demo/server/truststore.jks到此为止数字证书的部分就完成了,下面介绍一下tomcat如何配置ssl支持。
14.将CA认证过的证书导入信任库
keytool -import -v -trustcacerts -alias my_ca -file ../demo/ca/ca.crt -keystore ../demo/server/truststore.jks
通过下面的命令可以查看信任库的详细信息
keytool -v -list -keystore ../demo/server/truststore.jks
二、 tomcat ssl支持的配置 1. 在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对应其密码2. 重启tomcat,在浏览器中敲入https://localhost:8443/测试一下 通过https访问web功能时需要在浏览器中导入证书,因为我们主要解决webservice的ssl,关于浏览器如何导证书就不做介绍了。Tomcat的配置就这么简单。三、 weblogic9.2 ssl配置 weblogic通过控制台就可以完成ssl的配置,以下是部分截图1. 登录weblogic控制台 ,点击页面左端所属域下的:环境&&服务器&& 点击所属服务器进行编辑,在常规选项卡中作如下配置,如图(注意红色区域):[img]/admin/blogs/7.jpg& alt=&图7[/img]
2. 切换到私钥库选项卡 [img]/admin/blogs/8.jpg& alt=&图8[/img]注:1.密钥库选择“自定义标识和自定义信任”
2.密钥库的位置可以用绝对路径也可以用相对路径
3.密码就是我们在数字证书部分的密码
3. 切换到SSL选项卡 [img]/admin/blogs/9.jpg& alt=&图9[/img]注意那个私钥别名,就是我们在数字证书部分指定的server私钥的那个别名好了,保存设置后重启就可以了。访问https://localhost:7002/试一下吧。终于写完了,以前老是在javaeye中看别人的文章,还老挑毛病,今天第一次写博客,没想到这么累啊,实在是不会贴图,搞了半天都不行,还是直接传附件吧!这次算是投石问路吧,好的话下周再写一下利用cxf建立SSL的webservice(数字证书以及鉴权机制)。
浏览: 163917 次
来自: 上海
没有实例吗
简单明了,对入门很有帮助,本来对webflow一窍不通,看了一 ...
写的不错,完全懂了,好厉害的美眉!
请问怎么设置了&login-config&

我要回帖

更多关于 武当山供的是哪位大神 的文章

 

随机推荐