- 浏览: 535717 次
- 性别:
- 来自: 大连
文章分类
- 全部博客 (240)
- Java (25)
- Flex (46)
- Sybase (26)
- Sqlserver (7)
- .NET (1)
- .NET-Silverlight (11)
- Hibernate (5)
- Korn-shell (2)
- Perl (5)
- Unix & Linux (11)
- Ruby (3)
- SVN (2)
- Tomcat (1)
- CSS (5)
- Web (2)
- English (3)
- SQL (9)
- Qlikview (4)
- Spring (7)
- javascript (2)
- weblogic (5)
- iphone (1)
- 网络 (5)
- 随 (23)
- AutoSys (1)
- Hermes (2)
- RPM (2)
- CA (1)
- Operating System (1)
- SSIS (3)
- Windows (2)
- excel (1)
- SSRS (1)
- 活动 (23)
- Eclipse (2)
- Angular (0)
- Python (0)
- AWS (0)
- Android (0)
最新评论
-
devcang:
long t1 = System.nanoTime();
java中取得微秒级的时间 -
Sev7en_jun:
Sev7en_jun 写道 ExternalInterface ...
flex"页面跳转" -
Sev7en_jun:
ExternalInterface.call("fu ...
flex"页面跳转" -
lujinan858:
Incorrect syntax near 'fddActiv ...
Sybase alter 用法 -
Sev7en_jun:
Alter table TestItem drop COLUM ...
Sybase alter 用法
1.使用openssl转换将pem的密钥和证书成der格式
openssl pkcs8 -topk8 -nocrypt -in key.pem -inform PEM -out key.der -outform DER openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER
2.使用java程序ImportKey创建密钥库,可以修改java代码中的密码,别名,文件路径和名字
java ImportKey key.der cert.der
也可以创建后,使用keytool命令修改密码,别名
检查一个keystore中的内容
keytool -list -v -alias mykeypair -keystore mykeystore -storetype JCEKS
参数 -v 指明要列出详细信息
-alias 指明列出指定的别名为mykeypair的keypair信息(不指定则列出所有)
-keystore 指明要列出名字为mykeystore的keystore中的信息
-storetype 指明keystore类型(不指定默认为jks)
ImportKey.java
import java.security.*; import java.io.IOException; import java.io.InputStream; import java.io.FileInputStream; import java.io.DataInputStream; import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.security.spec.*; import java.security.cert.Certificate; import java.security.cert.CertificateFactory; import java.util.Collection; import java.util.Iterator; /** * ImportKey.java * * This class imports a key and a certificate into a keystore * ($home/keystore.ImportKey). If the keystore is * already present, it is simply deleted. Both the key and the * certificate file must be in DER-format. The key must be * encoded with PKCS#8-format. The certificate must be * encoded in X.509-format. * * Key format: * openssl pkcs8 -topk8 -nocrypt -in YOUR.KEY -out YOUR.KEY.der * -outform der * Format of the certificate: * openssl x509 -in YOUR.CERT -out YOUR.CERT.der -outform * der * Import key and certificate: * java comu.ImportKey YOUR.KEY.der YOUR.CERT.der * * Caution: the old keystore.ImportKey-file is * deleted and replaced with a keystore only containing YOUR.KEY * and YOUR.CERT. The keystore and the key has no password; * they can be set by the keytool -keypasswd-command for setting * the key password, and the keytool -storepasswd-command to set * the keystore password. * The key and the certificate is stored under the alias * importkey; to change this, use keytool -keyclone. * * Created: Fri Apr 13 18:15:07 2001 * Updated: Fri Apr 19 11:03:00 2002 * * @author Joachim Karrer, Jens Carlberg * @version 1.1 **/ public class ImportKey { /** * Creates an InputStream from a file, and fills it with the complete * file. Thus, available() on the returned InputStream will return the * full number of bytes the file contains * @param fname The filename * @return The filled InputStream * @exception IOException, if the Streams couldn't be created. **/ private static InputStream fullStream ( String fname ) throws IOException { FileInputStream fis = new FileInputStream(fname); DataInputStream dis = new DataInputStream(fis); byte[] bytes = new byte[dis.available()]; dis.readFully(bytes); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); return bais; } /** * Takes two file names for a key and the certificate for the key, * and imports those into a keystore. Optionally it takes an alias * for the key. * The first argument is the filename for the key. The key should be * in PKCS8-format. * The second argument is the filename for the certificate for the key. * If a third argument is given it is used as the alias. If missing, * the key is imported with the alias importkey * The name of the keystore file can be controlled by setting * the keystore property (java -Dkeystore=mykeystore). If no name * is given, the file is named keystore.ImportKey * and placed in your home directory. * @param args [0] Name of the key file, [1] Name of the certificate file * [2] Alias for the key. **/ public static void main ( String args[]) { // change this if you want another password by default String keypass = "importkey"; // change this if you want another alias by default String defaultalias = "importkey"; // change this if you want another keystorefile by default String keystorename = System.getProperty("keystore"); if (keystorename == null) keystorename = System.getProperty("user.home")+ System.getProperty("file.separator")+ "keystore.ImportKey"; // especially this ;-) // parsing command line input String keyfile = ""; String certfile = ""; if (args.length < 2 || args.length>3) { System.out.println("Usage: java comu.ImportKey keyfile certfile [alias]"); System.exit(0); } else { keyfile = args[0]; certfile = args[1]; if (args.length>2) defaultalias = args[2]; } try { // initializing and clearing keystore KeyStore ks = KeyStore.getInstance("JKS", "SUN"); ks.load( null , keypass.toCharArray()); System.out.println("Using keystore-file : "+keystorename); ks.store(new FileOutputStream ( keystorename ), keypass.toCharArray()); ks.load(new FileInputStream ( keystorename ), keypass.toCharArray()); // loading Key InputStream fl = fullStream (keyfile); byte[] key = new byte[fl.available()]; KeyFactory kf = KeyFactory.getInstance("RSA"); fl.read ( key, 0, fl.available() ); fl.close(); PKCS8EncodedKeySpec keysp = new PKCS8EncodedKeySpec ( key ); PrivateKey ff = kf.generatePrivate (keysp); // loading CertificateChain CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream certstream = fullStream (certfile); Collection c = cf.generateCertificates(certstream) ; Certificate[] certs = new Certificate[c.toArray().length]; if (c.size() == 1) { certstream = fullStream (certfile); System.out.println("One certificate, no chain."); Certificate cert = cf.generateCertificate(certstream) ; certs[0] = cert; } else { System.out.println("Certificate chain length: "+c.size()); certs = (Certificate[])c.toArray(); } // storing keystore ks.setKeyEntry(defaultalias, ff, keypass.toCharArray(), certs ); System.out.println ("Key and certificate stored."); System.out.println ("Alias:"+defaultalias+" Password:"+keypass); ks.store(new FileOutputStream ( keystorename ), keypass.toCharArray()); } catch (Exception ex) { ex.printStackTrace(); } } }// KeyStore
原文请参见http://knowledge-oracle.blogspot.com/2009/02/import-private-key-and-certificate-in.html
发表评论
-
Tools
2015-04-16 15:29 01. DeleteDuplicateLineFromFile ... -
Java List deepCopy function
2015-03-09 17:00 1206List<String> listA = ne ... -
集成Sqlserver Windows Authentication验证到第三方DB客户端软件中, 如DbVisualizer & Squirrel等
2014-03-18 16:47 1626本方法适用于Java编写的第三方DB客户端软件, 如DbV ... -
linux下解压命令大全和 rpm命令使用简介
2013-09-20 17:25 1554linux下解压命令大全 .t ... -
如何把jdk配置到eclipse里
2013-07-17 15:14 980window -> preference -> ... -
下一步需要深入学习的linux命令
2013-03-19 15:42 986vi grep awk sed find sor ... -
Linux shell grep指令
2013-03-07 15:40 8847grep一般格式为:grep [ ... -
linux shell if 参数
2013-03-07 15:38 968shell 编程中使用到得if ... -
OpenSSL建立自己的CA
2012-03-05 16:05 2077OpenSSL可以使用在Windows上,也可以在Linu ... -
查看linux 的IP
2012-02-23 15:56 959查看linux server的/etc/hosts 文件 ... -
java.lang.NoSuchFieldError: fAugmentations
2012-02-23 10:12 1634错误信息如下: <Feb 22, 2012 2:42: ... -
AutoSys的基本命令
2012-02-09 11:00 32291.cmd sendevent -E FORCE_ST ... -
(转)weblogic下新建domain步骤
2012-01-06 10:45 2483Weblogic新建domain:至WEBLOGIC安装目录下 ... -
JAVA1.5范型
2011-11-02 15:19 1219本文将介绍J2SE 5.0中三个比较重要的特性: 枚举类型, ... -
FTP命令详解
2011-05-23 14:15 894FTP命令是Internet用户使用最频繁的命令之一,不论是 ... -
SFTP服务器的文件管理(转)
2011-04-26 13:59 2149来源(http://forhope.iteye.c ... -
修改weblogic中StuckThreadMaxTime参数
2011-04-04 18:01 32763your_domain->Environment -& ... -
在Spring框架下 使用junit进行单元测试
2010-03-01 15:53 1180package com.yourPackage.test;im ... -
JAVA JNI 使用实例
2010-02-25 21:34 1633JAVA JNI 使用实例 JAVA可以通过JNI接口 ... -
java中调用c(c++)写的dll 文件的实现及步骤(转)
2010-02-25 21:33 1671JNI使用技巧点滴 本文为在 32 位 Windows 平台 ...
相关推荐
- `keytool`是Java提供的一个命令行工具,用于管理密钥库和证书,包括生成自签名证书、导入和导出证书等。 总的来说,Java解析证书程序是网络安全中不可或缺的一部分,它涉及到证书的读取、验证和管理,确保了数据...
它可以帮助开发者生成、导入、导出、删除和查看密钥对和证书。这对于创建和管理SSL/TLS证书,进行HTTPS通信,或者在非对称加密中生成和管理密钥对非常有用。 5. **如何使用keyTool**: - **生成密钥对**:使用`...
- 导出和导入密钥通常涉及Base64编码或PEM格式。 7. **解密代码示例** - 基于上述的描述,Decrypt.java可能包含以下内容: ```java import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; ...
在这些算法中,加密和解密使用的是同一密钥。AES(Advanced Encryption Standard)是目前广泛使用的对称加密标准,因其高效性和安全性而被广泛采用。 2. 非对称加密:例如RSA、DSA、ECC等,它使用一对公钥和私钥,...
对称加密则使用同一密钥进行加解密。 6. 安全存储和管理密钥:密钥必须安全存储,避免泄露。可以使用`KeyStore`类来保存密钥和证书。 7. 验证和签名:为了确保数据完整性和来源,可以使用数字签名。`Signature`类...
2. AES的加密与解密:使用同一密钥,对明文进行固定次数的迭代操作,转换成密文,反之则解密。 3. AES的安全性:至今尚未发现实际可行的攻击方法来破解AES,因此广泛应用于数据存储和传输。 在Java、Android和Web三...
先实例化`Cipher`,然后用密钥和加密模式(如`ENCRYPT_MODE`)对其进行初始化,最后调用`doFinal`方法进行加密。 ```java Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding"); cipher.init(Cipher....
同一密钥既用于加密也用于解密。 2. **非对称加密**:如RSA、DSA(数字签名算法)或ECC(椭圆曲线加密),使用一对公钥和私钥,公钥用于加密,私钥用于解密,增强了安全性。 3. **哈希函数**:如MD5、SHA-1或SHA-...
对称加密是最基础的加密方式,其特点是加密和解密使用同一密钥。在Java中,DES(Data Encryption Standard)是一种常见的对称加密算法。DES由IBM开发,采用64位的数据块和56位的密钥进行操作,通过一系列复杂的置换...
这里使用的json-20160810.jar是JSON解析库,支持SDK在处理请求和响应时的数据转换。 3. **slf4j-api-1.7.25.jar**:Simple Logging Facade for Java (SLF4J) 是一个为各种日志框架提供一个简单统一的接口,使得最终...
2. **对称加密**:使用同一密钥进行加密和解密,如AES、DES。 3. **非对称加密**:使用一对公钥和私钥,公钥用于加密,私钥用于解密,如RSA、ECC。 4. **哈希函数**:将任意长度的输入转换为固定长度的输出,如MD5、...
对于Java和MATLAB开发者来说,集成Face++ SDK需要按照官方文档的指导进行,通常包括下载SDK、注册API密钥、导入库文件以及调用相关函数。在开发过程中,可能需要对识别结果进行调试和优化,以提高准确性和稳定性。 ...
签名过程包括生成密钥对(公钥和私钥)、使用私钥对APK进行签名,然后使用公钥验证签名。Android系统在安装APK时会检查签名,只有签名有效,应用才能被安装。此外,签名还有助于维护应用更新的连续性,同一应用的...
- `truststoreFile`和`truststorePass`:定义信任的证书存储库,通常是同一密钥库,但也可以不同。 2. **保留HTTP Connector**: 如果你希望同时支持HTTP,保持现有的HTTP Connector配置,例如: ```xml ...
支持PKCS#7(用于封装和签名数据)和PKCS#12(个人证书存储格式),方便导入和导出证书和密钥。 6. **X.509证书**: X.509证书用于表示公钥及其相关属性,BouncyCastle提供读取、解析和创建X.509证书的能力,这...
1. **Keystore生成**:在Android开发中,`keytool`是Java提供的一个命令行工具,用于创建和管理密钥库。开发者通常会使用`keytool`来生成一个包含私钥和证书的keystore文件。执行`keytool -genkeypair`命令,需要...
开发者可以使用keytool生成新的keystore,或者导入已有的密钥对。 4. **signapk.jar工具**:这个工具就是我们所讨论的重点。它是Google提供的一个jar包,用于将APK和keystore结合,生成签名后的APK。使用时,开发者...
密钥用于控制加密和解密过程,而加密算法则定义了如何使用密钥对数据进行变换。常见的加密算法有DES、3DES、AES等,其中AES(Advanced Encryption Standard)是目前广泛使用的对称加密标准。 二、对称加密与非对称...