applet 数字签名 3步注册
?
3步注册成为你的数字证书 确保你机器上安装了jdk
首先进入一个新建立空文件夹,把需要注册的打成jar的jar包放入这个文件夹,然后cmd键入该文件夹,然后输入下面的命令
1. 生成一个注册文件
keytool -genkey ?-alias lams -keypass?123456??-storepass 123456 -validity 1277 -keystore .\lams
这时候会提示让你输入一些信息,国家公司之类的信息. 1277是天数
?
2验证
keytool -list -keystore .\lams -storepass LAMS@)!!
?
3 注册jar
jarsigner -verbose -keystore .\lams uupload.jar lams
会让你输入上面的密码123456 ?
这是发现你的jar文件里面的里面?META-INF文件夹下面多了几个文件.然后MAINIFEST.MF也改变了.这时候说明注册完成了.
?
下面是 keytool 和 jarsigner 命令说明: 都是在网上找的,如果是简单的applet上面的足够了
?
keytool?:
-genkey????? 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias?????? 产生别名
-keystore??? 指定密钥库的名称(产生的各类信息将不在.keystore文件中
-keyalg????? 指定密钥的算法???
-validity??? 指定创建的证书有效期多少天
-keysize???? 指定密钥长度
-storepass?? 指定密钥库的密码
-keypass???? 指定别名条目的密码
-dname?????? 指定证书拥有者信息 例如:? "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list??????? 显示密钥库中的证书信息??????java.security.KeyStore?中的静态方法?getDefaultType?返回。
-storepass?password-storepass?选项,用户将被提示输入口令。注意: 口令不应在命令行或脚本中指定,除非是为了测试,或在安全系统中。并且,在口令提示下键入口令时将显示出键入的字符,因此不要在其它人面前键入。
-keypass?password注意: 口令不应在命令行或脚本中指定,除非是为了测试,或在安全系统中。并且,在口令提示下键入口令时将显示出键入的字符,因此不要在其它人面前键入。
-sigfile?filefile?中的字符应来自“a-zA-Z0-9_-”。也就是说,只允许字母、数字、下划线和连字符。注意: .SF 和 .DSA 文件名中小写字母将被转换为大写字母。
如果命令行中没有?-sigfile?选项,则 .SF 和 .DSA 文件的基本文件名将是命令行中指定的别名的前 8 个字符,并全部被转换为大写。如果别名少于 8 个字符,将使用整个别名。如果别名中包含签名文件名所不允许的字符,则形成文件名时这样的字符将被转换为下划线 ("_")。
-signedjar?file如果命令行中没有指定名称,将使用输入的 JAR 文件名(要签名的 JAR 文件名);换句话说,该文件将被签名 JAR 文件覆盖。
-verify可以校验使用?jarsigner?或 JDK 1.1?javakey?工具或共用二者签名的 JAR 文件。
有关校验的详细信息,参见?JAR 文件校验。
-certs-verify?和?-verbose?选项一起出现在命令行中,则输出将包括 JAR 文件的每个签名人的证书信息。该信息包括- 验证签名人公钥的证书的类型名(保存在 .DSA 文件中)
- 如果该证书是 X.509 证书(更准确地说是?
java.security.cert.X509Certificate?的实例): 签名人的特征名密钥仓库也被检查。如果命令行中没有指定密钥仓库值,缺省密钥仓库文件(如果有)将被检查。如果签名人的公钥证书与密钥仓库中的项匹配,则还将显示下列信息:
- 该签名人的密钥仓库项的别名,在圆括号中。如果该签名人实际上来自于 JDK 1.1 身份数据库而不是密钥仓库,则别名将显示在方括号而不是圆括号中。
-verbose- 如果它出现在命令行中,则代表“verbose”模式,它使?jarsigner?在 JAR 签名或校验过程中输出额外信息。
-internalsf- 过去,JAR 文件被签名时产生的 .DSA(签名块)文件包含一个同时产生的 .SF 文件(签名文件)的完整编码副本。这种做法已被更改。为了减小输出 JAR 文件的整个大小,缺省情况下 .DSA 文件不再包含 .SF 文件的副本。但是如果?
-internalsf?出现在命令行中,将采用旧的做法。该选项主要在测试时有用;实际上不应使用它,因为这样将消除有用的优化。-sectionsonly- 如果它出现在命令行中,则 JAR 文件被签名时生成的 .SF 文件(签名文件)将不包括含有整个清单文件的散列的头。它仅包含 与 JAR 中每个单独的源文件相关的信息和散列,如签名 (.SF) 文件所述。
缺省情况下,该头将作为一种优化手段添加。只要该头存在,则无论何时 JAR 被校验,都将首先检查该头中的散列是否真正与整个清单文件的散列匹配。如果匹配,校验将进行下一步。如果不匹配,则有必要执行一个次优的校验,检查 .SF 文件中每个源文件信息部分中的散列是否等于清单文件中相应部分的散列。
有关的详细信息,参见?JAR 文件校验。
该选项主要在测试时有用;实际上不应使用它,因为这样将消除有用的优化。
-Jjavaoption- 将指定的?javaoption?串直接传递到 Java 解释器。((jarsigner?实际上是解释器的一个 “wrapper”)。该选项不应含有任何空格。它有助于调整执行环境或内存使用。要获得可用的解释器选项的清单,可在命令行键入?
java -h?或?java -X。?
- 该签名人的密钥仓库项的别名,在圆括号中。如果该签名人实际上来自于 JDK 1.1 身份数据库而不是密钥仓库,则别名将显示在方括号而不是圆括号中。