网站首页 | 安全培训 | 安全咨询 | 成功案例 | 技术资料 | 安全论坛  
信息安全咨询培训论坛  
设为首页
加收藏夹
联系方式
信息查询
» 您尚未 登录  注册 | 会员 | 帮助 | 论坛首页


信息安全咨询与培训论坛 -> PKI、PKM技术 -> 转贴:使用ejbca颁发证书&实现ssl双向认证您是本帖的第 889 个阅读者

本版只有一页
» 本页主题: 转贴:使用ejbca颁发证书&实现ssl双向认证 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
webmaster



级别: 论坛管理员该用户目前不在线
发贴: 472
威望: 527
金钱: 3148
注册时间:2004-08-10
最后登陆:2006-01-06
引用回复这个贴子  
 转贴:使用ejbca颁发证书&实现ssl双向认证


http://www.infosecurity.org.cn/forum/read.php?fid=11&tid=56&fpage=1
shaoshao

使用ejbca颁发证书&实现ssl双向认证


1、 生成server keystore 自签名证书
C:ejbcacertificateSelf>keytool -genkey -alias 511tomcatserver -dname "cn=th,ou
=511,o=511,l=511,s=hn,c=cn" -keypass 12345678 -keystore tomcatserverkeystore.jks
-storetype JKS -storepass 12345678 -keyalg RSA -keysize 1024

cn取server端的机器名

2 、生成req
C:ejbcacertificateSelf>keytool -certreq -alias 511tomcatserver -keypass 123456
78 -keystore tomcatserverkeystore.jks -storepass 12345678 -file tomcatserverreq.
pem

3、 导入ca的证书到server keystore
C:ejbcacertificateSelf>keytool -import -alias shaoshao -file shaoshao.crt -key
store tomcatserverkeystore.jks -storepass 12345678

4 、到ejbca administrate 页面 add end entity

username 511tomcatserver (这个名字应该是随便取的)
password 12345678
cn   th         (server端的机器名)
ca   shaoshao
token   user generated
(我的选项就是这样的)

5、 到 public page 进入 manually for a server
输入
username 511tomcatserver
password 12345678

在下面的文本区粘贴上第二步生成的req

MIIBkDCB+gIBADBRMQswCQYDVQQGEwJjbjELMAkGA1UECBMCaG4xDDAKBgNVBAcTAzUxMTEMMAoG
A1UEChMDNTExMQwwCgYDVQQLEwM1MTExCzAJBgNVBAMTAnRoMIGfMA0GCSqGSIb3DQEBAQUAA4GN
ADCBiQKBgQDkyfdrmWqr4TT8Y8RIi3Nnji8TRpscWY/2KTAd5XK3aXXKZ+fcUnmNswV/mRxtn5IE
HwkMMwgIkVdDg6UaaK7u/DUuAkHhWfrNQu6ne/eIhYlKdyklnajHHeTLe53WUJODo5HZZxqJs6bo
3IUmd9LsHNYMCXmo0LGt54WQYK1JiwIDAQABoAAwDQYJKoZIhvcNAQEEBQADgYEAKSQQtjOXHXz1
1xZBjjDAvn+1u1yYI1F74S/QKz7lwmB3FkgboICy2A7GTmgRnTfoivY032o22S6ri2lho545MZy5
KWnpSikdBZmJRElnX3mCzVlhprYshsVMm0OjtS+5fHDGBLNLnejW0hcLUM8RWTMum1eNPYCV4PoB
such9y8=

下面的下拉菜单选择 PEM Certificate
点击ok

之后就出来一个页面 这个页面就只要下面证书信息:
-----BEGIN CERTIFICATE-----
MIIC7jCCAdagAwIBAgIINhJ4VDsvz+0wDQYJKoZIhvcNAQEFBQAwQDERMA8GA1UE
AxMIc2hhb3NoYW8xHjAcBgNVBAoTFVByaW1lS2V5IFNvbHV0aW9ucyBBQjELMAkG
A1UEBhMCU0UwHhcNMDQwOTA0MDc1MDQxWhcNMDYwOTA0MDgwMDQxWjANMQswCQYD
VQQDEwJ0aDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Mn3a5lqq+E0/GPE
SItzZ44vE0abHFmP9ikwHeVyt2l1ymfn3FJ5jbMFf5kcbZ+SBB8JDDMICJFXQ4Ol
Gmiu7vw1LgJB4Vn6zULup3v3iIWJSncpJZ2oxx3ky3ud1lCTg6OR2WcaibOm6NyF
JnfS7BzWDAl5qNCxreeFkGCtSYsCAwEAAaOBojCBnzAPBgNVHRMBAf8EBTADAQEA
MA8GA1UdDwEB/wQFAwMHoAAwOwYDVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMC
BggrBgEFBQcDBAYIKwYBBQUHAwUGCCsGAQUFBwMHMB0GA1UdDgQWBBS+Kw9bSzoh
hv27oMVDOEhqdq7VRDAfBgNVHSMEGDAWgBR+IyvMGw3wc/R/YXzU8mc9yet8HDAN
BgkqhkiG9w0BAQUFAAOCAQEAXTBeJMV7Wu5Aqo1ct7CqbJAqoqP3JA9UD/D0fgfw
hf8O1KkGMBhPoGJiBkx2LS3DbGMYmpBPNHTBhPPmUG2eo/FvBvCpSSeE1ltFlhGM
YVIDXly/1s5sLOeKwgXK7xOKlQE9Mpf9twbd9gVaqWTsS2T8I8aDr5rHE0ouAhcI
UlyArq0GRuR55Njj3QLwgezFdhAkbWVuK8ZmajFN4HMRztpT2zJ3MO5PIlNxSQ7i
kM5V0uVR+iKrilS+1U1LwPIsdBNkYfxmYG3/dKi5neSo/vdeoUqQLMIinZFBF2HG
pS09cxQryn15bZf6rqEuwzsxbgcVqyMupy5CbvfTIFoJlg==
-----END CERTIFICATE-----

复制上面的信息自己生成 511tomcatserver.pem

6、 将认证回复导入server keystore
C:ejbcacertificateSelf>keytool -import -trustcacerts -alias 511tomcatserver -f
ile 511tomcatserver.pem -keystore tomcatserverkeystore.jks -storepass 12345678

会提示 认证回复已安装在 keystore中

7 、生成server 的 truststore

C:ejbcacertificateSelf>keytool -import -alias shaoshao -file shaoshao.crt -keystore tomcatservertruststore.jks -storepass

12345678 -storetype JKS
把ca的证书导入了server的truststore

8 、在server端tomcat的server.xml文件中设定keystorefile和truststorefile

<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
      port="8443" minProcessors="5" maxProcessors="75"
      enableLookups="true"
    acceptCount="100" debug="0" scheme="https" secure="true"
      useURIValidationHack="false" disableUploadTimeout="true">
  <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
      clientAuth=”true(验证客户端) "(false) protocol="TLS"
      keystoreFile="D:tomcatkeystoretomcatserverkeystore.jks" (这是第6步生成的server 的keystore)keystorePass="12345678"
      truststoreFile="D:tomcatkeystoretomcatservertruststore.jks (这是第七步生成的server 的 truststore) " truststorePass="12345678"

  />
</Connector>

9、 将ca的证书导入cacerts (java_homejrelibsecuritycacerts)
keytool –import –alias shaoshao –file shaoshao.crt –keystore cacerts –storepass changeit

10 、再用ejbca生成客户端证书(P12)
get from “for a browser”

11 、用浏览器访问
导入ejbca生成的客户端证书到IE中,用https://(the name of server):8443/….

需要验证客户端有刚才导入IE的客户端证书可选,并且验证服务端证书,通过,出现应用系统的页面,ok 成功!



大家好,希望大家能常来谈到学术和技术!
[0楼] | IP:已记录| Posted:2004-10-23 9:41 PM|
回到顶端
webmaster



级别: 论坛管理员该用户目前不在线
发贴: 472
威望: 527
金钱: 3148
注册时间:2004-08-10
最后登陆:2006-01-06
引用回复这个贴子  
 


http://www.infosecurity.org.cn/forum/read.php?fid=11&tid=56&fpage=1

用客户端程序访问server 实现ssl双向认证

JDK1.4.*

用ejbca生成了客户端的jks的keystore,再生成truststore,其中只导入ca的证书

QueryClient.java

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
public class QueryClient{

 
public String getfromEducation(String id,String wsdllocation){

  try {
      //服务端的url,注意使用了SSL协议后,前缀是https?
    System.setProperty("javax.net.ssl.keyStore","511certificateclient.jks");
    System.setProperty("javax.net.ssl.keyStorePassword","12345678");
    System.setProperty("javax.net.ssl.trustStore","511certificateclientTrust");
    System.setProperty("javax.net.ssl.trustStorePassword","12345678");     String endpointURL = wsdllocation;
    Service service = new Service();
    Call   call   = (Call) service.createCall();
    call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
    call.setOperationName( new QName("Query", "query") );//设置操作的名称。
    //call.addParameter( "op1", XMLType.XSD_DOUBLE, ParameterMode.IN );//参数的类型
      //call.setReturnType( XMLType.XSD_DOUBLE );//返回的数据类型

    //由于使用了证书数字证书,所以不使用用户名和密码验证。
    //call.getMessageContext().setUsername("hellking");。
    //call.getMessageContext().setPassword("simplewebservices");
        String ret = (String) call.invoke( new Object [] { id });
         
                return ret;
  } catch (Exception e){
      e.printStackTrace();
      return null;
    }
}
public static void main(String args[]){
  QueryClient a=new QueryClient();
  System.out.println(a.getfromEducation("430421198301254251","https://th:8443/axis/services/Query?wsdl"));
}
}

服务端的配置与上面用浏览器访问时相同



大家好,希望大家能常来谈到学术和技术!
[1楼] | IP:已记录| Posted:2004-10-23 9:42 PM|
回到顶端
webmaster



级别: 论坛管理员该用户目前不在线
发贴: 472
威望: 527
金钱: 3148
注册时间:2004-08-10
最后登陆:2006-01-06
引用回复这个贴子  
 


http://www.infosecurity.org.cn/forum/read.php?fid=11&tid=56&fpage=1
shaoshao

JAVA有缺省的login.config登录配置文件 也可以自己编写.
用Java执行命令行 -Djava.security.auth.login.config==login.config 用双等号将替换系统登录配置文件,用一个等号,login.config文件将会添加到(不是替换)系统登录配置文件

如:
JAASExample{
ALwaysLoginModule required;
PassWordLoginModule optional;
}
它包含LoginContext构造器中应用的文本字符串 (例子中的JAASExample)和登录过程列表(认证的顺序).它指定登录所需的登录模块(采用不同的认证技术)(例子中有两个登录模块ALwaysLoginModule 和PassWordLoginModule ),required 和optional等参数是标记该登录模块的登录成功与否对总体认证过程的影响.

required表示登录模块必须成功.即使不成功,还将调用其他登录模块.

optional 表示登录模块可以失败,如果另外一个登录模块成功,总体登录成功.如果所有的登录模块都是可选的,那么要使整个认证过程成功至少要有一个模块成功.

requisite 表示登录模块必须是成功的,而且它失败,将不调用其他登录模块.

sufficient 表示如果登录模块成功,则总体登录成功,同时假设没有其他必须或者必不可少的登录模块失败.



大家好,希望大家能常来谈到学术和技术!
[2楼] | IP:已记录| Posted:2004-10-23 9:45 PM|
回到顶端
qinzi_520



级别: 新手上路该用户目前不在线
发贴: 1
威望: 1
金钱: 1
注册时间:2005-11-01
最后登陆:2005-11-22
引用回复这个贴子
 Re:转贴:使用ejbca颁发证书&实现ssl双向认证


刚接触,请问shaoshao.crt文件是什么时候生成的?我只把superadmin.p12导入了浏览器。thanks

[3楼] | IP:已记录| Posted:2005-11-1 9:55 PM|
回到顶端

本版只有一页

 信息安全咨询与培训论坛 -> PKI、PKM技术



< 联系我们 - 网站导航 >

Powered by Ofstar Copyright © Ofstar Group
Copyright © 2004-2005 信息安全咨询与培训 All Rights Reserved
云南省信息安全咨询培训中心,版权所有
滇ICP备05000420号