- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在开发一个 API 服务器,它将从用户那里获取以下信息的输入
"CN=ABC123,O=DEF,L=XYZ,S=CA,C=US,E=info@abc.com"
并使用我们的根证书创建签名的开发者证书。为了使用 makecert.exe
制作证书,我遵循了 Creating self signed certificates with makecert.exe for development教程并使用以下命令创建根证书
makecert.exe ^
-n "CN=CARoot" ^
-r ^
-pe ^
-a sha512 ^
-len 4096 ^
-cy authority ^
-sv CARoot.pvk ^
CARoot.cer
pvk2pfx.exe ^
-pvk CARoot.pvk ^
-spc CARoot.cer ^
-pfx CARoot.pfx ^
-po Test123
在命令提示符下,它会在提示弹出窗口中询问证书和 private.key 密码,这很好,因为这是一次性过程,我已手动完成此操作
我用过的开发者证书在哪里
Process.Start("makecert.exe",certCmd);
在 certCmd
中将以下内容作为 string
makecert.exe ^
-n "CN=%1" ^
-iv CARoot.pvk ^
-ic CARoot.cer ^
-pe ^
-a sha512 ^
-len 4096 ^
-b 01/01/2014 ^
-e 01/01/2016 ^
-sky exchange ^
-eku 1.3.6.1.5.5.7.3.2 ^
-sv %1.pvk ^
%1.cer
pvk2pfx.exe ^
-pvk %1.pvk ^
-spc %1.cer ^
-pfx %1.pfx ^
-po Test123
现在根据documentation上面的命令中没有给出 -po
参数,因此它在提示符中要求输入密码 这是一个问题
因为这是一个API,所以无法在提示输入私钥时输入密码
另一种选择是使用 X509Certificate2
和 bouncyCaSTLe
但不确定如何使用它们,任何帮助将不胜感激
我想让它尽可能简单,这就是我使用 makecert.exe
和 Process.Start()
最佳答案
如果您想生成自己的证书...我过去曾使用此代码即时生成证书。您需要根据您的解决方案对其进行调整,但它应该会为您提供所需的一切。它使用充气城堡。
public static X509Certificate GenerateRootCertificate(AsymmetricCipherKeyPair key, X509Name subjectAndIssuer, int serialNumber, int yearsValid)
{
X509V3CertificateGenerator gen = new X509V3CertificateGenerator();
Asn1SignatureFactory sig = new Asn1SignatureFactory("SHA256withRSA", key.Private, new SecureRandom());
DateTime notBefore = DateTime.Now;
DateTime notAfter = DateTime.Now.AddYears(yearsValid);
gen.SetSerialNumber(BigInteger.ValueOf(serialNumber));
gen.SetSubjectDN(subjectAndIssuer);
gen.SetIssuerDN(subjectAndIssuer);
gen.SetPublicKey(key.Public);
gen.AddExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(true));
gen.AddExtension(X509Extensions.KeyUsage, true, new KeyUsage(KeyUsage.DigitalSignature | KeyUsage.CrlSign | KeyUsage.KeyCertSign));
gen.AddExtension(X509Extensions.SubjectKeyIdentifier, false, new SubjectKeyIdentifierStructure(key.Public));
gen.AddExtension(X509Extensions.AuthorityKeyIdentifier, false, new AuthorityKeyIdentifierStructure(key.Public));
gen.SetNotBefore(notBefore);
gen.SetNotAfter(notAfter);
return gen.Generate(sig);
}
这可能是更好的解决方法,最终让您拥有更多控制权。
编辑:您可以使用此方法检索您的公钥和私钥,前提是它是 PEM 格式:
public static object ReadObjectFromPEMFile(string fileName)
{
PemReader reader = new PemReader(new StreamReader(File.Open(fileName, FileMode.Open)));
object r = reader.ReadObject();
reader.Reader.Close();
return r;
}
不要忘记将结果转换为 AsymmetricCipherKeyPair
!
关于c# - 创建并签署证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37019580/
有人可以告诉我签署我的 clickonce 应用程序的步骤吗? 如果从某人那里购买证书,我该如何安装它在我的开发盒以及我希望它运行的服务器上? 请概述步骤。 马尔科姆 最佳答案 以下是我相信您正在执行
我正在使用命令行 jarsigner.exe -keystore Keys.jks base.apk debug0 使用我自己的 key 退出 APK ,在删除 META-INF/CERT.RSA、C
我使用 iTextSharp 签署 PDF 文件。但是 Adobe Reader 无法验证我的签名。我使用证书颁发机构生成的 SHA-2 测试证书(我也尝试过 SHA-1)。我已经为该机构的测试证
我在尝试签署 F# 类库项目时遇到了很多麻烦。 首先我试过这个thread ,使用 AssemblyKeyFileAttribute 但没有成功。 我还尝试将标志“--keyfile:keyfile.
我正在尝试掌握 .NET dll/程序集的正式签名。 尤其 何时以及如何使用私钥 创建/控制私钥的最佳实践 需要签署什么样的模块/最佳实践 最佳答案 请参阅使用 Strong Name Signatu
我有一个由五个项目组成的解决方案,每个项目都编译成单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳做法是什么? 用不同的 key 对每个签名;确保密码不同 用不同的 key
我有一个由五个项目组成的解决方案,每个项目都编译为单独的程序集。现在我正在对它们进行代码签名,但我很确定我做错了。这里的最佳实践是什么? 使用不同的 key 对每个签名进行签名;确保密码不同 使用不同
尝试在 Java 中签署 SOAP 消息时抛出异常: 14:47:39.896 [AWT-EventQueue-0] ERROR com.ui.FinestraPrincipal - WSHandle
我正在运行 java web start 应用程序。由于应用程序数字签名已过期。我已经从 CA 购买了签名,并使用 storetype 作为 pkcs12 对我的 jar 文件进行了签名。 对 JNL
我已经在jar中手动添加了一些类文件。并在服务器中替换。但服务器没有拿出这个新的 jar 说:java.lang.SecurityException:类“test.TestProcess2”的签名者信
我想使用 keytool 对我的插件 jar 进行签名以生成 key 。 我知道有 -validity 选项,但如何设置它以使插件始终有效且永不过期。 谢谢 最佳答案 查看 keytool 文档: V
我有一个需要互联网访问的 Java 应用程序,因为它通过 WebView 嵌入了 Web 浏览器。 JavaFX 组件。 如果应用程序未打包在 Jar 中,则执行不会出现问题。但是,当打包在 Jar
我以前做过,但我完全忘记了如何签署 activeX 控件? 最佳答案 Digital Signing for ActiveX Components (MSDN) 关于activex - 签署 Acti
不知不觉中我删除了通常命名如下的钥匙串(keychain)系统证书 Software Signing com.apple.systemdefault com.apple.kerberos.kdc Ap
我尝试了一些基于 iText v1 或 v2 的数字 PDF 签名实用程序,发现似乎整个 PDF 都加载到内存中(对于 60M PDF 进程可能需要多达 300-400MB 的内存)。 最近的 iTe
我正在尝试使用 Python 对 Amazon 的 SimpleDB 服务进行 API 调用。例如,我使用的是最简单的请求 ListDomains。然而,无论我如何尝试,响应始终是“我们计算的请求签名
我的同事给了我一个Java项目来支持和增强。我需要签署 .jar 文件。我只找到了下一个文件:genkey.bat、project.cer、signjar.bat 和 keystore-jar.jar
目前我正在升级我的旧应用程序,它是使用 itextsharp 5.0.0 完成的到 5.4.5(最新)...但是我在获取等效代码时遇到了问题 PdfSignatureAppearance.SetCry
如果我有一个作为 API 请求发送的复杂对象(例如下面的订单),我应该在生成签名时包括所有属性还是应该只使用一个子集? 我问是因为我不清楚,而且从查看其他 API 的请求参数来看,请求参数是扁平和简单
为什么 WP7 项目不支持强名称签名?项目属性中没有签名选项卡。 无论如何,我已经使用 AssemblyInfo.cs 中的 AssemblyKeyFile 和 AssemblyDelaySign 属
我是一名优秀的程序员,十分优秀!