java 生成csr

Recently I had to write a program to generate Certificate Signing Request (CSR) using Java API. Here I am providing the steps I followed with Java Program to generate CSR. After that, we will also make sure that it’s valid by validating it with VeriSign CSR validator tool.

最近,我不得不编写一个程序来使用Java API生成证书签名请求(CSR)。 在这里,我提供了Java程序生成CSR所遵循的步骤。 之后,我们还将通过使用VeriSign CSR验证器工具对其进行验证来确保其有效。

在Java中以编程方式生成CSR的步骤 (Steps to Generate CSR Programmatically in Java)

  1. Get instance of KeyPairGenerator using standard encryption algorithm. I am using RSA here.使用标准加密算法获取KeyPairGenerator的实例。 我在这里使用RSA。
  2. Initialize the instance by providing keysize and source of randomness.通过提供密钥大小和随机性来源来初始化实例。
  3. Generate the PrivateKey and PublicKey that will be used in generating CSR.生成将在生成CSR中使用的PrivateKey和PublicKey。
  4. Initialize PKCS10 using the PublicKey.使用PublicKey初始化PKCS10。
  5. Get instance of Signature using standard algorithm. I am using MD5WithRSA in my case.使用标准算法获取签名实例。 我正在使用MD5WithRSA。
  6. Initialize the signature object using the PrivateKey.使用PrivateKey初始化签名对象。
  7. Create X500Name object by passing Common Name, Organization Unit, Organization, Location, State and Country通过传递通用名称,组织单位,组织,位置,州和国家/地区来创建X500Name对象
  8. Encode and Sign the PKCS10 object using X500Signer, Signature and X500Name object使用X500Signer,Signature和X500Name对象对PKCS10对象进行编码和签名
  9. Print the PKCS10 object to PrintStream. After that you can save it in file or print in console将PKCS10对象打印到PrintStream。 之后,您可以将其保存在文件中或在控制台中打印

Java程序生成CSR (Java Program to generate CSR)

Here is the java program that does all the above steps and generates CSR.

这是执行上述所有步骤并生成CSR的Java程序。

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Signature;import sun.security.pkcs.PKCS10;
import sun.security.x509.X500Name;
import sun.security.x509.X500Signer;/*** This class generates PKCS10 certificate signing request** @author Pankaj@JournalDev.com* @version 1.0*/
public class GenerateCSR {private static PublicKey publicKey = null;private static PrivateKey privateKey = null;private static KeyPairGenerator keyGen = null;private static GenerateCSR gcsr = null;private GenerateCSR() {try {keyGen = KeyPairGenerator.getInstance("RSA");} catch (NoSuchAlgorithmException e) {e.printStackTrace();}keyGen.initialize(2048, new SecureRandom());KeyPair keypair = keyGen.generateKeyPair();publicKey = keypair.getPublic();privateKey = keypair.getPrivate();}public static GenerateCSR getInstance() {if (gcsr == null)gcsr = new GenerateCSR();return gcsr;}public String getCSR(String cn) throws Exception {byte[] csr = generatePKCS10(cn, "Java", "JournalDev", "Cupertino","California", "USA");return new String(csr);}/**** @param CN*            Common Name, is X.509 speak for the name that distinguishes*            the Certificate best, and ties it to your Organization* @param OU*            Organizational unit* @param O*            Organization NAME* @param L*            Location* @param S*            State* @param C*            Country* @return* @throws Exception*/private static byte[] generatePKCS10(String CN, String OU, String O,String L, String S, String C) throws Exception {// generate PKCS10 certificate requestString sigAlg = "MD5WithRSA";PKCS10 pkcs10 = new PKCS10(publicKey);Signature signature = Signature.getInstance(sigAlg);signature.initSign(privateKey);// common, orgUnit, org, locality, state, countryX500Name x500Name = new X500Name(CN, OU, O, L, S, C);pkcs10.encodeAndSign(new X500Signer(signature, x500Name));ByteArrayOutputStream bs = new ByteArrayOutputStream();PrintStream ps = new PrintStream(bs);pkcs10.print(ps);byte[] c = bs.toByteArray();try {if (ps != null)ps.close();if (bs != null)bs.close();} catch (Throwable th) {}return c;}public PublicKey getPublicKey() {return publicKey;}public PrivateKey getPrivateKey() {return privateKey;}public static void main(String[] args) throws Exception {GenerateCSR gcsr = GenerateCSR.getInstance();System.out.println("Public Key:\n"+gcsr.getPublicKey().toString());System.out.println("Private Key:\n"+gcsr.getPrivateKey().toString());String csr = gcsr.getCSR("journaldev.com <https://www.journaldev.com>");System.out.println("CSR Request Generated!!");System.out.println(csr);}}

The output of the above program is:

上面程序的输出是:

Public Key:
Sun RSA public key, 2048 bitsmodulus: 26037776931447606564301911668340264365588256441567542911840292792434765686548135174803514821500951717023344926363109981325787971173530460861040665091912998796384478140799338823102943709222572753753148575339745289589310512219456669632030578432457763671199859709589664660544809036295499123604464821071199542366028235019743704583980957653052817052242205738795726852117662538431560025502232067403973812417432679056018629884034887401784178882475333051653937425454311701777276170897597383690900044390393040515458476468213094755569309619160826096120016873070175904132213506407833344302003083256464971071054484747131864881601public exponent: 65537
Private Key:
Sun RSA private CRT key, 2048 bitsmodulus:          26037776931447606564301911668340264365588256441567542911840292792434765686548135174803514821500951717023344926363109981325787971173530460861040665091912998796384478140799338823102943709222572753753148575339745289589310512219456669632030578432457763671199859709589664660544809036295499123604464821071199542366028235019743704583980957653052817052242205738795726852117662538431560025502232067403973812417432679056018629884034887401784178882475333051653937425454311701777276170897597383690900044390393040515458476468213094755569309619160826096120016873070175904132213506407833344302003083256464971071054484747131864881601public exponent:  65537private exponent: 25298403709154489762858973211975444004809463618616275729043784180708243280233136325904277122448305560724148367046056291421653033438297841307774621822675009709913148757092004499746754407868174354456039926809796314446632225705877945213988725639946603590755180537220676670046710410838949024133510870905438180870021344643386623503140258259331165258679977643949695434716892555078931474566186812852195303180453022307659511062728632303963722257687210144573594944851724154252492929289772706338425317947078700779560698959421958188982734117978481433792183026113100173798691435911387913122160234329314926878622847731795776140273prime p:          175772254401264910103735582553464996137826598899089757178842916506359825653874202619059992928378254849255956739128172727658175365316963495288643832645710857312081444039722597527221721147856862890282813419318626764068614091314957197496400996624314942167102882712465353334798965180064268779720240407757331030471prime q:          148133600608016272198361816372419184094364458516977730263887349448789432076447173882622161964439974131740979311782046426986257528056562105443129953435093622007037350344528566939773240286670595412252905217001182077948314004352625954242085959642446078959820708573114242894350683858794188646565327136681214847031prime exponent p: 101053557552693276819026645703182234836520295303720095075826531701582701542436672509894295032659961338026854113201264812742492506742947504089072162693212897779950328036508659682784686656529149640356986801548548441591425328174389387479887647448173373681616528294555283014916084197544311138475963472290167669653prime exponent q: 131373439958178155434535994799849669925883868012325551038309054803584835606562134983379851041353436630987826717112411346709420022974861569686827275486435318954072125314321518648603083326088596465370147504807096826746904901978780318178410976186554938451602899487107222263842569041012494201987731263838527386653crt coefficient:  106387108829418419042369947333325674364935070884841588785129398089552939085654124805841484499579147437761572358957912128200485877657705616839322864387844152358079881259957155577261553853578965458427174717192288199902709049923855496876099206975440375817623502655106113446775789727649598690744221181544174782126
CSR Request Generated!!
-----BEGIN NEW CERTIFICATE REQUEST-----
MIIC1jCCAb4CAQAwgZAxDDAKBgNVBAYTA1VTQTETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UE
BxMJQ3VwZXJ0aW5vMRMwEQYDVQQKEwpKb3VybmFsRGV2MQ0wCwYDVQQLEwRKYXZhMTMwMQYDVQQD
DCpqb3VybmFsZGV2LmNvbSA8aHR0cDovL3d3dy5qb3VybmFsZGV2LmNvbT4wggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDOQkjVbOyP5P43lQLO8u78NMhOoXBknXst3P0AFMgZoN/sR+SC
Pbz/RBJIV6vzhSi8nT9CMA+khYTi0QAiUYO3klNzmXpMnt0yy4QX/Lej4ybgHVrver1kKGINv/nc
iM2gI3huM1sUsQVdKbb4KmKHjJPo4DQFZqVJtRnh/Zs9Pq64kqrgktmqN8G2nrCdWu/RSX7JX5Yi
AdvPXyHi2ltvPXXGaO/dUCEGKfBbeYhi+6jYje64bXSg8Lblv0H10U8QXqpW4iyAeKMA9QTopa2s
Rgs6ypk0Jq4wVROCG+Z9ZBwaMKPlhCacVfFa82mxSI1OBUUyh3lbrF4E9RzxKhnBAgMBAAGgADAN
BgkqhkiG9w0BAQQFAAOCAQEAyFk6cRROYAiXEuoqvZ0oriNx7No618juirSzpLR3brYR1e1PqOKZ
a1amqR0+UeAOrz2PqkGYNPW4KP3mrPswm0quCEr1+e6JQzkr6W5NpnMbtMtxEe0bsvyr4H2FDSrO
mdtEm/p8+IccFFGEXFksWQaGvcJoI50dPB1yuSIvu6B8kuDimB2osrf0iCakQSq2x9yzwRZ/l4yf
Hstkv/uE0VCVGKwc69PSH6h8DE/GfqkZTUXnnSeV5JPw5tn1eS81pX0oSlOFtXDy4yUWi6+T6fE5
QZrc5xlRd0hLgFy6K+3JHqBGp8aEFuuPp+Na79EgrfZ44ZvV5gncLC9fXmTWbg==
-----END NEW CERTIFICATE REQUEST-----

验证企业社会责任 (Validating the CSR)

Once we have the CSR, we can validate it using any CSR Validator online utility.

获得CSR后,我们可以使用任何CSR Validator在线实用程序对其进行验证。

I hope the program helps you in generating CSR easily. Let me know if you face any issues with it.

我希望该程序可以帮助您轻松生成CSR。 让我知道您是否遇到任何问题。

翻译自: https://www.journaldev.com/223/java-generate-csr-program

java 生成csr

java 生成csr_Java以编程方式生成CSR相关推荐

  1. java ca认证_java编程方式生成CA证书

    下面是java编程方式生成CA证书的代码,使用的是BC的provider.生成CA证书与生成普通证书的区别是:1,生成CA证书时,issuer和subject一致:2,在ContentSigner.b ...

  2. boost::regex模块实现以编程方式生成代码片段,以便剪切并粘贴到正则表达式源中测试程序

    boost::regex模块实现以编程方式生成代码片段,以便剪切并粘贴到正则表达式源中测试程序 实现功能 C++实现代码 实现功能 boost::regex模块实现以编程方式生成代码片段,以便剪切并粘 ...

  3. java searchview_如何以编程方式打开SearchView?

    问题 ActionBar有一个名为"SearchView"的小部件.当它不使用时,它看起来像这样: 当它在使用时,它看起来像这样: 我想(当然是以编程方式)打开searchview ...

  4. java代码生成apk_android – 如何通过java代码以编程方式生成apk文件

    您可以使用ANT jars ant.jar和ant-launcher.jar. 在这种情况下,应完全指定build.xml的路径. 以这种方式从Java类中调用它: public class AntT ...

  5. IBM Rational Software Architect 通过编程方式生成UML模型

    统一建模语言(UML)在全世界范围内,成为软件开发项目方面广泛采用的交流标准.在软件项目中,UML 模型现在用于描述以及交流软件产品,它从获取软件结构的需求出发,然后分析,设计,开发,部署应用,以及维 ...

  6. 生成drl文件_我如何通过编程方式生成.drl文件。任何示例对我都将有所帮助

    我搜索了很多站点,但找不到有关.drl文件生成的任何特定相关示例. .drl文件生成方面的文档也不值得. 解决方案 //- ---- package部分------- PackageDescr pkg ...

  7. kafka java获取topic_通过编程方式获取Kafka中Topic的Metadata信息

    如果我们需要通过编程的方式来获取到TopicMetadataRequest请求到 def findLeader(topic: String): Unit = { val consumer = conn ...

  8. java.awt.headless_以编程方式设置java.awt.headless = true

    小编典典 我正在使用一个main()类,该类在常量(和其他静态代码)中静态加载JFreeChart的不同部分. 将静态加载块移到类的顶部解决了我的问题. 这不起作用: public class Foo ...

  9. java 送参数_关于java:如何以编程方式发送带参数的HTTP请求?

    本问题已经有最佳答案,请猛点这里访问. 如果我使用浏览器向服务器发送信息(例如使用登录.密码页),我只需填写用户文本框和密码文本框,然后单击登录按钮. 我想发送此信息,但不必使用浏览器.我想" ...

最新文章

  1. rocketmq广播消息为什么不能重试_几分钟带你看懂“消息队列和RocketMQ”的入门总结
  2. Httpd之检测与安装
  3. Viewpager无限循环(首页与尾页平滑过渡)
  4. python气象数据处理与绘图_Python气象数据处理与绘图:纬高图的另一种思路
  5. 电力与计算机科学技术,上海电力大学计算机科学与技术专业
  6. 一个简单51c语言程序,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!...
  7. 如何避免gradle插件下载:Gradle、Android Plugin、Build Tools
  8. 腾达路由器linux开发,Tenda无线路由器远程命令执行后门漏洞
  9. 前端花瓣飘落特效代码
  10. msvcp100.dll 丢失的解决方法-msvcp100.dll 丢失怎么修复
  11. 硬核!教你三种方法,实现微信自定义修改地区!
  12. 电脑打开网络没有WiFi列表
  13. 中国自然地理分区数据集 (含农业区划、森林工程、生态保护区、九大流域等)
  14. IDEA中DEBUG时断点变成灰色
  15. CS硕士妹子找工作经历【阿里人搜等互联网公司】
  16. 如何用Photoshop来磨皮人脸图
  17. 音乐app用户推荐系统构建_一款专门给用户推荐动听音乐的音乐期刊类的应用。画面极简优美...
  18. 视频教程-wordpress建站教程之环境部署详解课程-PHP
  19. java第五章:面向对象(oop)三大特性之多态
  20. ION-DTN-前向纠错编码ECLSA详细介绍

热门文章

  1. bus,device,driver三者关系
  2. [转载] 利用python对csv文件进行简单的数据分析
  3. mac nginx 安装及PHP配置
  4. 字典重复key的合并
  5. typescript类与继承
  6. docker 命令2
  7. 排错技能:任务管理器中追踪某w3wp.exe是哪个IIS站点的application pool
  8. JAVA-初步认识-第六章-类与对象的关系(细节)
  9. IIS出现 分析器错误消息: 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的...
  10. IDL 建立影像金字塔