博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
keytool工具生成自签名证书并且通过浏览器导入证书
阅读量:4941 次
发布时间:2019-06-11

本文共 3641 字,大约阅读时间需要 12 分钟。

1、生成服务器证书库

keytool -genkey -alias tomcat -keypass changeit -keyalg RSA -keysize 1024 -validity 365 -keystore /home/tomcat/server.keystore -storepass changeit -dname "CN=10.10.6.100,OU=shixun,O=shixun,L=beijing,ST=beijing,c=cn"

  注:CN:要设定的域名或IP

2、生成客户端证书库

keytool -genkey -alias client -keypass changeit -keyalg RSA -keysize 1024 -validity 365 -storetype PKCS12 -keystore /home/tomcat/client.p12 -storepass changeit -dname "CN=client,OU=shixun,O=shixun,L=beijing,ST=beijing,c=cn"

3、导出客户端证书

keytool -export -alias client -keystore /home/tomcat/client.p12 -storetype PKCS12 -keypass changeit -file /home/tomcat/client.cer -storepass changeit

4、让服务器信任客户端证书,将客户端证书导入到服务器证书库

keytool -import -v -file /home/tomcat/client.cer -keystore /home/tomcat/server.keystore -storepass changeit

5、查看服务器证书库,可以看到2个证书文件,一个是服务器证书,一个是受信任的客户端证书:

keytool -list -v -keystore /home/tomcat/server.keystore -storepass changeit

6、通过浏览器导入客户端证书client.p12

双击客户端证书client.p12点击下一步输入密码即可导入IE浏览器即可实现访问。

Chrome和FireFox需要手工导入才能访问。
Chrome实现:
设置 → 显示高级设置... → 管理证书... → 个人 → 选择证书 → 确定
FireFox实现:
工具 → 选项 → 高级 → 证书 → 查看证书 → 导入 → 选择证书 → 确定

通过程序控制访问

solrj程序通过httpClient代理实现证书的安全访问。

示例代码:

public class DoubleSSL {      private String    httpUrl = "https://192.168.100.175:8443/solr";      // 客户端密钥库      private String    sslKeyStorePath          = "E:/ssl/server.keystore";      private String    sslKeyStorePassword      = "changeit";      // 客户端信任的证书      private String    sslTrustStore        = "E:/ssl/server.keystore";      private String    sslTrustStorePassword    = "123456";      public HttpClient testHttpsClient() {         SSLContext sslContext = null;         HttpClient httpClient = null;         try {             KeyStore kstore = KeyStore.getInstance("JKS");             kstore.load(new FileInputStream(sslKeyStorePath), sslKeyStorePassword.toCharArray());             KeyManagerFactory keyFactory =KeyManagerFactory.getInstance("sunx509");             keyFactory.init(kstore, sslKeyStorePassword.toCharArray());             KeyStore tstore = KeyStore.getInstance("jks");             tstore.load(new FileInputStream(sslTrustStore), sslTrustStorePassword.toCharArray());             TrustManager[] tm;             TrustManagerFactory tmf =TrustManagerFactory.getInstance("sunx509");             tmf.init(tstore);             tm = tmf.getTrustManagers();             sslContext = SSLContext.getInstance("SSL");             sslContext.init(keyFactory.getKeyManagers(),tm, null);         } catch (Exceptione) {             e.printStackTrace();         }         try {             httpClient = new DefaultHttpClient();             SSLSocketFactory socketFactory = new SSLSocketFactory(sslContext);             Scheme sch = new Scheme("https", 8443, socketFactory);      httpClient.getConnectionManager().getSchemeRegistry().register(sch);             HttpGet httpGet = new HttpGet(httpUrl);             HttpResponse response =httpClient.execute(httpGet);      System.out.println(response.getStatusLine().getStatusCode());         } catch (Exceptione) {             e.printStackTrace();         }         return httpClient;      }  }

7、配置tomcat服务器

将生成的server.keystore服务端证书拷贝到tomcat目录,修改tomcat下conf目录下的server.xml文件将8443端口注释打开

8、设置tomcat强制https访问

在 tomcat /conf/web.xml 中的 </welcome- file-list> 后面加上这

CLIENT-CERT
Client Cert Users-only Area
SSL
/*
CONFIDENTIAL

 注:如果设置了clientAuth为true,则需要客户端证书验证,否则访问不了。

9、访问tomcat 8080端口会自动跳转到8443端口

http://10.10.6.100:8080

转载于:https://www.cnblogs.com/yinliang/p/8568555.html

你可能感兴趣的文章
算法不会,尚能饭否之栈
查看>>
浅入MFC之对话框及MFC程序的运行
查看>>
浅入MFC之类框架
查看>>
flex 注册监听器时传值
查看>>
Flex的TabNavigator中tab触发的事件
查看>>
flex 弹出的titleWindow 隐藏标题栏
查看>>
NavigatorContent使用皮肤
查看>>
从持续交付看敏捷开发的自相似性(敏捷开发的心跳)
查看>>
从优先级排序看敏捷开发的自相似性
查看>>
flex4 SuperTabNavigator 添加关闭图片
查看>>
flex4自定义皮肤
查看>>
敏捷开发中的MoSCoW优先级排序方法
查看>>
敏捷开发中史诗故事与用户故事的颗粒度
查看>>
asp.net免费网站三剑客:WebMatrix + MojoPortal + SQLCE
查看>>
C#编码简单性之语义篇(如何编写简短的C#代码,随时更新)
查看>>
flex4 设置 圆角
查看>>
在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)
查看>>
处理导出到EXCEL时,身份证号码的问题:mso-number-format
查看>>
C#编码简单性之函数篇(如何编写简短的C#代码,随时更新)
查看>>
flex AS中TabNavigator子项后报超出索引 commitProperties解决
查看>>