Java代码签名证书申请和使用方法
java 加签方法

java 加签方法Java加签方法Java加签是在数据传输过程中,为数据增加一段签名,以验证数据的完整性和真实性。
在Java中,可以通过使用MessageDigest类和PrivateKey类实现加签功能。
下面将介绍如何使用Java中的加签方法。
首先,我们需要获取要加签的数据。
假设我们有一个字符串类型的数据,如下所示:```javaString data = "Hello, World!";```接下来,我们需要准备私钥,私钥用于生成签名。
私钥可以由数字证书颁发机构(CA)或其他合法机构颁发。
假设我们已经有一个私钥文件 privateKey.pem,我们可以使用下面的代码读取私钥:```javaString privateKeyPath = "path/to/privateKey.pem";String privateKeyContent = newString(Files.readAllBytes(Paths.get(privateKeyPath)));```然后,我们需要将私钥转换为Java中的PrivateKey对象。
我们可以使用Java的密钥工厂(KeyFactory)类来实现转换:```javaString privateKeyType = "RSA";PKCS8EncodedKeySpec keySpec = newPKCS8EncodedKeySpec(Base64.getDecoder().decode(privateKeyContent));PrivateKey privateKey =KeyFactory.getInstance(privateKeyType).generatePrivate(keySpec);```接下来,我们使用私钥对数据进行加签。
通常使用RSA算法进行签名。
我们可以使用Java的Signature类来实现加签功能:```javaString algorithm = "SHA256withRSA";Signature signature = Signature.getInstance(algorithm);signature.initSign(privateKey);signature.update(data.getBytes());byte[] sign = signature.sign();```现在,我们已经生成了加签后的数据。
Java代码签名证书申请和使用方法

文档出处:/support/java_signing_guide.html第1步下载签名工具Step 1: Download Signing Tools如果您还没有签名工具,请到SUN公司网站免费下载:/j2se/,推荐下载JDK1.4.2或以上版本,支持Solaris SPARC/x86, Linux86 和Windows 操作系统。
If you have not already done so, download the Java 2 Software Development Kit (SDK). The latest version is available free of charge for the Solaris SPARC/x86, Linux86, and Microsoft Windows platforms from /j2se/.您将使用签名工具中的keytool, jar, jarsigner 来申请代码签名证书和数字签名您的代码。
You will be using the keytool, jar, and jarsigner to apply for your Code Signing C ertificate and sign your code.第2步申请签名证书Step 2: Enrollment(1) 生成私钥和公钥对(Keystore) Create a Keystore使用以下命令生成私钥和公钥对:To generate a public/private key pair, enter the following command, specifying a name for your keystore and an alias as well.c:\jdk1.5\bin\keytool -genkey -keyalg rsa -keystore <keystore_filename> -alias <alias_name>Keytool 会提示您输入私钥密码、您的姓名(Your name,填单位网址)、您的部门名称、单位名称、所在城市、所在省份和国家缩写(中国填:CN,其他国家填其缩写),单位名称一定要与证明文件上的名称一致,部门名称(OU)可以不填。
java 签章流程

Java签章流程介绍在现代数字化的时代,电子签名已经成为了一种普遍的方式来确认文件的真实性和完整性。
Java提供了丰富的API和工具来实现电子签名功能。
本文将详细介绍Java签章的流程和步骤,以确保流程清晰且实用。
签章流程Java签章的流程可以分为以下几个步骤:1.准备工作:在开始签章之前,需要准备一些必要的工作,包括获取证书、创建密钥库等。
2.加载证书:需要加载用于签章的证书。
证书是由认证机构(CA)颁发的,用于验证签名者身份和确保文件的完整性。
3.创建数字签名:使用私钥对文件进行加密生成数字签名。
私钥是与公钥配对使用的密钥,只有持有私钥的人才能对文件进行数字签名。
4.将数字签名附加到文件:将生成的数字签名附加到原始文件中。
这可以通过在文件中添加特定标记或在文件末尾添加附加信息来完成。
5.验证数字签名:接收者可以使用公钥来验证文件的数字签名是否有效。
公钥是与之前加载的证书相关联的密钥。
下面将详细介绍每个步骤。
准备工作在开始签章之前,需要进行一些准备工作。
1.获取证书:需要获取一个由认证机构颁发的证书。
可以通过向认证机构申请或购买来获得。
2.创建密钥库:密钥库是用于存储私钥和相关证书的安全文件。
可以使用Java提供的keytool工具来创建密钥库。
以下是创建密钥库的示例命令:keytool -genkeypair -alias mykey -keyalg RSA -keystore keystore.jks这将创建一个名为keystore.jks的密钥库,并生成一个RSA算法的密钥对。
3.导出证书:从生成的密钥库中导出公钥证书。
可以使用以下命令导出证书:keytool -exportcert -alias mykey -keystore keystore.jks -file certificate.crt这将从keystore.jks中导出名为certificate.crt的证书文件。
加载证书在准备工作完成后,可以加载用于签章的证书。
Nokia MIDlet代码签名证书申请和使用方法

文档出处:/support/Nokia_MIDlet_signing_guide.htmlVeriSign 和Thawte 的Java代码签名证书可以用于数字签名运行J2ME MIDlet(MIDP 2.0)代码,支持诺基亚和索爱等手机的MIDlet应用软件,运行签名后的MIDlet Suite就会显示软件发行商名称,否则会显示让用户不敢下载的警告“应用软件来源未知,继续?”。
同时,签名后访问网络等都不会弹出烦人的警告框了,让手机应用更加安全!但请注意:并不是所有手机都支持数字签名机制,Thawte Java代码签名证书对索爱手机支持多些,而VeriSign Java代码签名证书则对诺基亚手机支持多些,您可以提供使用两种证书签名的两种版本供用户选择安装,使得您的MIDlet软件适用手机范围更广和支持最多的手机型号。
本签名指南是基于Nokia Developer's Suite for J2ME 的使用指南编写,如果您还没有NDS forJ2ME,您到Nokia网站上下载NDS3.0签名工具。
或下载最新版的Carbide.j 1.5 开发工具。
请注意:您也可以直接使用Sun Java Wireless Toolkit 2.5.1 中文版来签名针对Nokia手机的MIDlet,如果您还没有此开发工具可以到SUN 网站上下载合适的开发工具同时,请一定要先参考:MIDP 2.0安全机制,充分理解MIDP 2.0的安全机制有助于签名MIDlet 的成功部署。
第1步创建Keystore和私钥Step 1. Create a Keystore and Key Pair:如图1所示,点击左边主菜单“Sign Application Package”,就会显示缺省的测试证书(default),如果您已经有了Java代码签名证书的密钥对(.sks文件)或您已经有了微软代码签名证书(.pfx)文件,则您可以点击“Import Key Pair”导入您的证书密钥对,导入时需要输入您的私钥密码。
java生成ssl证书方法

生成 SSL 证书可以使用 Java 的 `keytool` 工具。
以下是一些基本的步骤:### 使用 keytool 生成 SSL 证书#### 步骤 1: 创建密钥库(keystore)```bashkeytool -genkey -alias your_alias -keyalg RSA -keystore your_keystore.jks -keysize 2048```这将提示你输入一些信息,如密码、姓名、组织等。
#### 步骤 2: 生成证书签名请求(CSR)```bashkeytool -certreq -alias your_alias -keystore your_keystore.jks -file your_csr_file.csr```这将生成一个 CSR 文件,它包含了你的公钥信息。
#### 步骤 3: 自签名证书```bashkeytool -export -alias your_alias -fileyour_certificate.cer -keystore your_keystore.jks```这将生成一个自签名的证书文件。
以上命令中的参数:- `your_alias` 是你为证书分配的别名。
- `your_keystore.jks` 是你的密钥库文件名。
- `your_csr_file.csr` 是证书签名请求文件名。
- `your_certificate.cer` 是自签名证书文件名。
这些命令会在命令行中运行,确保替换掉 `your_alias`、`your_keystore.jks` 等为你自己的命名和路径。
请注意,生成的证书可以用于测试或内部使用。
如果要在生产环境中使用 SSL 证书,最好从受信任的证书颁发机构(CA)获取正式证书。
微信开发之使用java获取签名signature

微信开发之使⽤java获取签名signature ⼀、前⾔微信接⼝调⽤验证最终需要⽤到的三个参数noncestr、timestamp、signature:接下来将会给出获取这三个参数的详细代码本⽂的环境eclipse + maven本⽂使⽤到的技术HttpClient、Json字符串转map、sha1加密⼆、需要⽤到的jar包maven依赖的包有:1、HttpClient包依赖<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.3</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.1</version></dependency>2、json转map相关包依赖<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency><dependency><groupId>xom</groupId><artifactId>xom</artifactId><version>1.2.5</version></dependency>三、运⾏结果四、详细代码package com.luo.util;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.UUID;import net.sf.json.JSONObject;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import ValuePair;import org.apache.http.ParseException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpUriRequest;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.protocol.HTTP;import org.apache.http.util.EntityUtils;public class HttpXmlClient {public static String post(String url, Map<String, String> params) {DefaultHttpClient httpclient = new DefaultHttpClient();String body = null;HttpPost post = postForm(url, params);body = invoke(httpclient, post);httpclient.getConnectionManager().shutdown();return body;}public static String get(String url) {DefaultHttpClient httpclient = new DefaultHttpClient();String body = null;HttpGet get = new HttpGet(url);body = invoke(httpclient, get);httpclient.getConnectionManager().shutdown();return body;}private static String invoke(DefaultHttpClient httpclient,HttpUriRequest httpost) {HttpResponse response = sendRequest(httpclient, httpost);String body = paseResponse(response);return body;}private static String paseResponse(HttpResponse response) {HttpEntity entity = response.getEntity();String charset = EntityUtils.getContentCharSet(entity);String body = null;try {body = EntityUtils.toString(entity);} catch (ParseException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return body;}private static HttpResponse sendRequest(DefaultHttpClient httpclient,HttpUriRequest httpost) {HttpResponse response = null;try {response = httpclient.execute(httpost);} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return response;}private static HttpPost postForm(String url, Map<String, String> params) { HttpPost httpost = new HttpPost(url);List<NameValuePair> nvps = new ArrayList<NameValuePair>();Set<String> keySet = params.keySet();for (String key : keySet) {nvps.add(new BasicNameValuePair(key, params.get(key)));}try {httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));} catch (UnsupportedEncodingException e) {e.printStackTrace();}return httpost;public static void main(String[] args) {//获取access_tokenMap<String, String> params = new HashMap<String, String>();params.put("corpid","wx5f24fa0db1819ea2");params.put("corpsecret","uQtWzF0bQtl2KRHX0amekjpq8L0aO96LSpSNfctOBLRbuYPO4DUBhMn0_v2jHS-9"); String xml = HttpXmlClient.post("https:///cgi-bin/gettoken",params);JSONObject jsonMap = JSONObject.fromObject(xml);Map<String, String> map = new HashMap<String, String>();Iterator<String> it = jsonMap.keys();while(it.hasNext()) {String key = (String) it.next();String u = jsonMap.get(key).toString();map.put(key, u);}String access_token = map.get("access_token");System.out.println("access_token=" + access_token);//获取ticketparams.put("access_token",access_token);xml = HttpXmlClient.post("https:///cgi-bin/get_jsapi_ticket",params);jsonMap = JSONObject.fromObject(xml);map = new HashMap<String, String>();it = jsonMap.keys();while(it.hasNext()) {String key = (String) it.next();String u = jsonMap.get(key).toString();map.put(key, u);}String jsapi_ticket = map.get("ticket");System.out.println("jsapi_ticket=" + jsapi_ticket);//获取签名signatureString noncestr = UUID.randomUUID().toString();String timestamp = Long.toString(System.currentTimeMillis() / 1000);String url="";String str = "jsapi_ticket=" + jsapi_ticket +"&noncestr=" + noncestr +"×tamp=" + timestamp +"&url=" + url;//sha1加密String signature = SHA1(str);System.out.println("noncestr=" + noncestr);System.out.println("timestamp=" + timestamp);System.out.println("signature=" + signature);//最终获得调⽤微信js接⼝验证需要的三个参数noncestr、timestamp、signature}/*** @author:罗国辉* @date: 2015年12⽉17⽇上午9:24:43* @description: SHA、SHA1加密* @parameter: str:待加密字符串* @return:加密串**/public static String SHA1(String str) {try {MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1"); //如果是SHA加密只需要将"SHA-1"改成"SHA"即可digest.update(str.getBytes());byte messageDigest[] = digest.digest();// Create Hex StringStringBuffer hexStr = new StringBuffer();// 字节数组转换为⼗六进制数for (int i = 0; i < messageDigest.length; i++) {String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);if (shaHex.length() < 2) {hexStr.append(0);}hexStr.append(shaHex);}return hexStr.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();return null;}}五、⼯程下载更多精彩内容请点击《》,《》欢迎⼤家学习阅读。
java keystore 创建证书

在Java中,你可以使用keytool命令行工具来创建和管理密钥库和证书。
下面是如何使用keytool创建一个自签名的证书的步骤:1.首先,打开命令提示符或终端。
2.使用以下命令创建一个新的密钥库(如果该文件已存在,keytool会抛出一个错误):bash复制代码keytool -genkey -alias mycert -keyalg RSA -keystore keystore.jks -keysize 2048在这个命令中:复制代码* `-genkey`表示生成密钥对。
* `-alias mycert`表示为这个证书设置一个别名"mycert"。
* `-keyalg RSA`表示使用RSA算法生成密钥对。
* `-keystore keystore.jks`表示将生成的密钥对存储在名为"keystore.jks"的文件中。
* `-keysize 2048`表示生成的密钥长度为2048位。
3. 在命令提示符或终端中,你将看到一些提示,要求你输入密钥库和密钥的密码,以及一些证书信息(如你的名字和组织)。
按照提示输入这些信息。
4. 完成后,你会看到一条消息,表示证书已经成功生成并存储在密钥库中。
5. 要查看密钥库中的证书,可以使用以下命令:bash复制代码keytool -list -alias mycert -keystore keystore.jks 这将列出与别名"mycert"关联的所有条目。
请注意,自签名证书只适用于测试和开发环境。
在生产环境中,你应该从受信任的证书颁发机构(CA)获取证书。
JAVA代码认证签名

JA V A代码认证签名●证书导入环境:建议使用WTK2.5 + JDK1.5导入步骤:菜单Project -> Sign -> Import Key Pair 导入证书目录下的keystore.sks文件选择versign1以及thawte1证书将其导入。
请注意:在导入证书的时候,请选择安全保护域:trusted third party(可信任的第三方)。
●代码签名1.打开签名工程2.菜单Project -> Sign3.在Alias List中选择versign1或者thawte1(根据机型,Nokia一般使用versign1,索爱一般使用thawte1)4.按钮 Sign MIDlet Suite.. 签名完成注意:当前手机日期必须设置正确,在证书有效期内才能安装成功。
Versign 证书 Valid from 07-6-15 上午8:00 to 08-6-15 上午7:59Thawte 证书 Valid from 07-6-15 下午6:44 to 08-6-14 下午6:44●签名MIDlet权限对应表为了使应用能获得相应的API访问权限,必须在JAD中设定API权限设定方法为 Project -> Settings...-> Permissions在MIDlet-Permissions 中加入如下访问权限 (如果该机型不支持部分API,则需要取消这些API的权限设定,或者将这些API权限访问加在 MIDlet-Permissions-Opt 域中)部分主要权限对应如下(SMS短消息)javax.microedition.io.Connector.sms (基础必须)javax.wireless.messaging.sms.send (发送必须)javax.wireless.messaging.sms.receive (接收必须)(HTTP连接)javax.microedition.io.Connector.http(SOCKET连接)javax.microedition.io.Connector.socket(JSR75本地文件访问)javax.microedition.io.Connector.file.readjavax.microedition.io.Connector.file.write(本地非SIM卡通讯簿访问)javax.microedition.pim.ContactList.read●证书颁发代理机构网址//support/MIDlet_signing_guide.htm代理商客服MSN: cs@●证书申请流程总体流程:签订合同和提交证明材料(传真)—> 汇款—> 在线申请—> 颁发证书—> 邮寄合同正本和发票证明材料:营业执照、电话费单注意事项:首先,申请方先填写代码签名证书申请表,文件发送给发证方。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文档出处:/support/java_signing_guide.html第1步下载签名工具Step 1: Download Signing Tools如果您还没有签名工具,请到SUN公司网站免费下载:/j2se/,推荐下载JDK1.4.2或以上版本,支持Solaris SPARC/x86, Linux86 和Windows 操作系统。
If you have not already done so, download the Java 2 Software Development Kit (SDK). The latest version is available free of charge for the Solaris SPARC/x86, Linux86, and Microsoft Windows platforms from /j2se/.您将使用签名工具中的keytool, jar, jarsigner 来申请代码签名证书和数字签名您的代码。
You will be using the keytool, jar, and jarsigner to apply for your Code Signing C ertificate and sign your code.第2步申请签名证书Step 2: Enrollment(1) 生成私钥和公钥对(Keystore) Create a Keystore使用以下命令生成私钥和公钥对:To generate a public/private key pair, enter the following command, specifying a name for your keystore and an alias as well.c:\jdk1.5\bin\keytool -genkey -keyalg rsa -keystore <keystore_filename> -alias <alias_name>Keytool 会提示您输入私钥密码、您的姓名(Your name,填单位网址)、您的部门名称、单位名称、所在城市、所在省份和国家缩写(中国填:CN,其他国家填其缩写),单位名称一定要与证明文件上的名称一致,部门名称(OU)可以不填。
除国家缩写必须填CN外,其余都可以是英文或中文。
请一定要保存好您的私钥和私钥密码。
我们不会要求您提供私钥文件!Keytool prompts you to enter a password for your keystore, your name, organization, and address. The public/private key pair generated by keytool is saved to your keystore and will be used to sign Java Applets and applications. This key is never sent to Thawte and is required to sign code. Thawte encourages you to make a copy of the public/private key pair and store it in a safe deposit box or other secure location. If the key is lost or stolen, contact Thawte immediately to have it revoked.(2) 生成证书请求文件(CSR) Generate a CSR请使用如下命令生成证书请求文件(CSR):You need to generate a Certificate Signing Request (CSR) for the enrollment process, the following command requests Keytool to create a CSR for the key pair in the keystore:c:\jdk1.5\bin\keytool–certreq –file certreq.csr –keystore <keystore_filename> -alias<alias_name>请把生成的certreq.csr 文件复制和粘贴到Thawte证书在线申请页面的CSR文本框中,或直接发给维瑞客服,请等待1-2个工作日后颁发证书。
Copy the contents of the CSR and paste them directly into the VeriSign enrollment form. Open the file in a text editor that does not add extra characters (Notepad or Vi are recommended).第3步使用代码签名证书Step 3: Begin Using(1) 导入签名证书Import Thawte Codesigning Certificate一旦Thawte验证了您的真实身份,将会颁发证书给您。
您需要到Thawte网站下载您的证书,请选择PKCS #7 格式证书(PKCS #7 Certificate Chain),此证书格式含有您的证书和根证书链,Keytool 要求此格式证书,请把证书保存到您的电脑中。
Once Thawte has verified your identity, we will send a confirmation e-mail with your Sun Java Code Signing Certificate attached. Upon receipt, the attached Code Signing Certificate is saved to a file on your computer. A Code Signing Certificate is a "trust path" or "chain" back to the Thawte root certificate. This "trust path" allows your code to be validated on any standard JRE without installing any additional files.请使用如下命令导入您的证书到keystore 中,这里假设您的证书名称为:cert.cer,请同时指明详细路径,一旦成功导入证书,请及时备份您的keystore文件:To import your Sun Java Signing Code Signing Certificate into your keystore, enter the following code with the path correct name for your file (for example, “cert.cer”).c:\jdk1.5\bin\keytool -import –trustcacerts –keystore <keystore_filename> -alias <alias_name>-file cert.cer(2) 把Applet代码打包成JAR文件Bundle Applet into a JAR File请使用jar 把您的Java代码打包成JAR文件,此JAR文件包含了当前目录及其子目录的所有Applet 文件:Use jar to bundle your Applets or applications as a JAR file. This string creates a JAR fileC:\TestApplet.jar. The JAR file contains all the files under the current directory and itssub-directories.c:\jdk1.5\bin\jar cvf C:\TestApplet.jar运行后,Jar会显示:Jar responds:added manifestadding: TestApplet.class (in = 94208) (out= 20103)(deflated 78%)adding: TestHelper.class (in = 16384) (out= 779)(deflated 95%)(3) 数字签名Applet Sign Your Applet使用jarsigner签名您的JAR文件,最后的参数Mycert为Keystore中签名证书的别名:Use jarsigner to sign the JAR file with the private key you saved in your keystore.c:\jdk1.5\bin\jarsigner C:\TestApplet.jar MyCert(a) 会提示您输入私钥密码,请使用您在第1步设置的密码;At the prompt, enter the password to your keystore.(b) 请输入.jar文件的完整路径和文件名,MyCert 就是您在生成私钥和CSR时使用的别名<alias_name>;In the command syntax, TestApplet represents the name and location of your JAR file. MyCert must specify the same value that you used when generating the key pair and certificate signing request (CSR).(c) Jarsigner 会生成您的代码摘要(Hash),并把此摘要和您的签名证书添加到JAR文件中。
Jarsigner hashes your Applet or application and stores the hash in the JAR file with a copy of your Code Signing Certificate.如果您已经有了从其他电脑上备份的Keystore文件(如:wotonecs.jks),则可以使用如下命令来签名JAR文件,最后的参数wotonecs为Keystore中签名证书的别名:c:\jdk1.5\bin\jarsigner -keystore wotonecs.jks C:\TestApplet.jar wotonecs(d) 使用以下命令验证已经签名的JAR文件Verify the output of your signed JAR file.c:\jdk1.5\bin\jarsigner -verify -verbose -certs c:\TestApplet.jar一旦成功签名,就可以把已经签名的JAR文件放到网上供用户下载了,用户端的Java系统会显示您的签名证书信息,如果已经签名的文件被篡改或损坏,则系统会提醒用户并拒绝安装。