java security / SSL / TLS / md5 / sha / base64 / rsa / des / aes / 3des
阅读原文时间:2021年04月21日阅读:1

java jdk keytool

C:\Program Files\Java\jdk1.7.0_11\bin\keytool.exe

[lindows@Loadrunner19 ~]$ ll /opt/soft/jdk1.7.0_11/bin/keytool 
-rwxrwxrwx 1 lindows lindows 7957 Jan 12 18:05 /opt/soft/jdk1.7.0_11/bin/keytool

tomcat7 开启https ,使用JDK 7的keytool 生成tomcat证书

http://lixor.iteye.com/blog/1532655

https单向/双向认证的tomcat配置攻略

http://xiaohuafyle.iteye.com/blog/1538719

C:\Program Files\Java\jdk1.7.0_11\bin>keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore

C:\Program Files\Java\jdk1.7.0_11\bin>keytool.exe -help

Dos代码

  1. 密钥和证书管理工具  
  2. 命令:  
  3.  -certreq            生成证书请求  
  4.  -changealias        更改条目的别名  
  5.  -delete             删除条目  
  6.  -exportcert         导出证书  
  7.  -genkeypair         生成密钥对  
  8.  -genseckey          生成密钥  
  9.  -gencert            根据证书请求生成证书  
  10.  -importcert         导入证书或证书链  
  11.  -importkeystore     从其他密钥库导入一个或所有条目  
  12.  -keypasswd          更改条目的密钥口令  
  13.  -list               列出密钥库中的条目  
  14.  -printcert          打印证书内容  
  15.  -printcertreq       打印证书请求的内容  
  16.  -printcrl           打印 CRL 文件的内容  
  17.  -storepasswd        更改密钥库的存储口令  
  18. 使用 "keytool -command_name -help" 获取 command_name 的用法  

 
C:\Program Files\Java\jdk1.7.0_11\bin>keytool.exe -genkey -help

Dos代码

  1. keytool -genkeypair [OPTION]…  
  2. 生成密钥对  
  3. 选项:  
  4.  -alias                   要处理的条目的别名  
  5.  -keyalg                 密钥算法名称  
  6.  -keysize               密钥位大小  
  7.  -sigalg                 签名算法名称  
  8.  -destalias           目标别名  
  9.  -dname                   唯一判别名  
  10.  -startdate           证书有效期开始日期/时间  
  11.  -ext                     X.509 扩展  
  12.  -validity              有效天数  
  13.  -keypass                   密钥口令  
  14.  -keystore             密钥库名称  
  15.  -storepass                 密钥库口令  
  16.  -storetype           密钥库类型  
  17.  -providername     提供方名称  
  18.  -providerclass   提供方类名  
  19.  -providerarg               提供方参数  
  20.  -providerpath         提供方类路径  
  21.  -v                              详细输出  
  22.  -protected                      通过受保护的机制的口令  
  23. 使用 "keytool -help" 获取所有可用命令  

 
linux jdk7 keytool

[lindows@Loadrunner19 ~]$ /opt/soft/jdk1.7.0_11/bin/keytool --help

Shell代码

  1. Key and Certificate Management Tool  
  2. Commands:  
  3.  -certreq            Generates a certificate request  
  4.  -changealias        Changes an entry's alias  
  5.  -delete             Deletes an entry  
  6.  -exportcert         Exports certificate  
  7.  -genkeypair         Generates a key pair  
  8.  -genseckey          Generates a secret key  
  9.  -gencert            Generates certificate from a certificate request  
  10.  -importcert         Imports a certificate or a certificate chain  
  11.  -importkeystore     Imports one or all entries from another keystore  
  12.  -keypasswd          Changes the key password of an entry  
  13.  -list               Lists entries in a keystore  
  14.  -printcert          Prints the content of a certificate  
  15.  -printcertreq       Prints the content of a certificate request  
  16.  -printcrl           Prints the content of a CRL file  
  17.  -storepasswd        Changes the store password of a keystore  
  18. Use "keytool -command_name -help" for usage of command_name  

 [root@Loadrunner19 bin]# /usr/bin/keytool -?

Shell代码

  1. Unrecognized command: --help  

  2. Usage:  keytool [COMMAND] [-- COMMAND]…  

  3. Manage private keys and public certificates.  

  4. Available commands:  

  5.   -genkey         Generate a Key Entry, eventually creating a key store.  

  6.                     [-alias ALIAS] [-keyalg ALGORITHM] [-keysize KEY_SIZE]  

  7.                     [-sigalg ALGORITHM] [-dname NAME] [-keypass PASSWORD]  

  8.                     [-validity DAY_COUNT] [-storetype STORE_TYPE]  

  9.                     [-keystore URL] [-storepass PASSWORD]  

  10.                     [-provider PROVIDER_CLASS_NAME] [-v].  

  11.   -import         Add Key Entries and Trusted Certificates.  

  12.                     [-alias ALIAS] [-file FILE] [-keypass PASSWORD]  

  13.                     [-noprompt] [-trustcacerts] [-storetype STORE_TYPE]  

  14.                     [-keystore URL] [-storepass PASSWORD]  

  15.                     [-provider PROVIDER_CLASS_NAME] [-v].  

  16.   -selfcert       Generate a self-signed Trusted Certificate.  

  17.                     [-alias ALIAS] [-sigalg ALGORITHM] [-dname NAME]  

  18.                     [-validity DAY_COUNT] [-keypass PASSWORD]  

  19.                     [-storetype STORE_TYPE] [-keystore URL]  

  20.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].  

  21.   -identitydb     NOT IMPLEMENTED YET.  Import JDK1.1 Identity Database.  

  22.                     [-file FILE] [-storetype STORE_TYPE] [-keystore URL]  

  23.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].  

  24.   -certreq        Issue a Certificate Signing Request (CSR).  

  25.                     [-alias ALIAS] [-sigalg ALGORITHM] [-file FILE]  

  26.                     [-keypass PASSWORD] [-storetype STORE_TYPE] [-keystore URL]  

  27.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v]  

  28.                     [-attributes].  

  29.   -export         Export a Certificate from a key store.  

  30.                     [-alias ALIAS] [-file FILE] [-storetype STORE_TYPE]  

  31.                     [-keystore URL] [-storepass PASSWORD]  

  32.                     [-provider PROVIDER_CLASS_NAME] [-rfc] [-v].  

  33.   -list           Print one or all Certificates in a key store to STDOUT.  

  34.                     [-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]  

  35.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME]  

  36.                     [-rfc] [-v].  

  37.   -printcert      Print a human-readable form of a Certificate in a FILE.  

  38.                     [-file FILE] [-v].  

  39.   -keyclone       Clone a Key Entry in a key store.  

  40.                     [-alias ALIAS] [-dest ALIAS] [-keypass PASSWORD]  

  41.                     [-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]  

  42.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].  

  43.   -storepasswd    Change the password protecting a key store.  

  44.                     [-new PASSWORD] [-storetype STORE_TYPE] [-keystore URL]  

  45.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].  

  46.   -keypasswd      Change the password protecting a Key Entry in a key store.  

  47.                     [-alias ALIAS] [-keypass PASSWORD] [-new PASSWORD]  

  48.                     [-storetype STORE_TYPE] [-keystore URL]  

  49.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].  

  50.   -delete         Delete a Key Entry or a Trusted Certificate from a key store.  

  51.                     [-alias ALIAS] [-storetype STORE_TYPE] [-keystore URL]  

  52.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].  

  53.   -cacert         Import a CA's Trusted Certificate.  

  54.                     [-file FILE] [-storetype STORE_TYPE] [-keystore URL]  

  55.                     [-storepass PASSWORD] [-provider PROVIDER_CLASS_NAME] [-v].  

  56. Standard options:  

  57.       -help       print this help, then exit  

  58.       -version    print version number, then exit  

  59.   -JOPTION        pass argument to the Java runtime  

  60. Please report bugs at http://www.gnu.org/software/classpath/bugs.html  

javax.net.ssl

JAVA 加密技术

http://www.iteye.com/topic/426342

Java加密技术(一) 
Java加密技术(二) 
Java加密技术(三) 
Java加密技术(四) 
Java加密技术(五) 
Java加密技术(六) 
Java加密技术(七) 
Java加密技术(八) 
Java加密技术(九) 
Java加密技术(十)

HTTPS和HTTP的区别

http://jessicacao.iteye.com/blog/318912

http://bbs.5dmail.net/redirect.php?tid=184648&goto=lastpost

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 
它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。 
它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用 40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。 
HTTPS和HTTP的区别: 
https协议需要到ca申请证书,一般免费证书很少,需要交费。 
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。 
http的连接很简单,是无状态的 
HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全 
HTTPS解决的问题: 
1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server. 
2 . 通讯过程中的数据的泄密和被窜改 
1. 一般意义上的https, 就是 server 有一个证书. 
a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样. 
b) 服务端和客户端之间的所有通讯,都是加密的. 
i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程. 
ii. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了. 
2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书. 
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份. 
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体. 
HTTPS 一定是繁琐的. 
a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返. 
i. 任何应用中,过多的round trip 肯定影响性能. 
b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密. 
i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求. 
ii. 加密后数据量的影响. 所以,才会出现那么多的安全认证提示

电信行业Http接口(通道)设计思路与实现过程

http://www.iteye.com/topic/398334

本页不但包含安全的内容,也包含不安全的内容.是否显示不安全的内容?

https中夹带有http的问题,

http://swingboat.iteye.com/blog/445608

今天解决了一个困扰我们很久的一个问题(说是很久,但一直没有花时间去research,想想不影响功能使用,没什么啊。而真正解决问题,也就那二十来分钟,哎!人已经懒惰成这样了)。
问题描述:
我们利用ajax做了一套系统,但通过https访问的时候,IE总会弹出下面的对话框:

而在我们的代码中所有的访问都是通过https的,怎么会有不安全的元素呢?在网上google了一下,有人提到可能是iframe的问题。而在我们系统中确实用到了很多的iframe。修改code,去掉所有的iframe。再次run,上面的对话框没有了,终于找到原因了。但是我们的系统中是需要iframe啊?请看下面的code:

var   iframe  =  document.createElement(  "  iframe  "  );
         iframe.style.zIndex  =-  1  ;
         iframe.style.position  =  "  absolute  "  ;
         iframe.style.left  =  0  ;
         iframe.style.top  =  0  ;
         iframe.style.width  =  menu.getSize().x  -  2  ;
         iframe.style.height  =  menu.getSize().y  -  4  ;
         menu.getHtmlElement().appendChild(iframe);

从上面的code,可以看出代码中没有指定src属性,这样IE是没有办法知道这个iframe将引用的是安全内容还是不安全内容呢。所以会弹出上面的对话框。增加src属性,修改code:

var iframe=document.createElement("