秘密鍵を keytool で扱える形式への?換方法

 

·미리보기 | 소스복사·
 
  1. ::::::::::::::::::::::::::::   
  2. :: doit.sh   
  3. ::::::::::::::::::::::::::::   
  4. #!/bin/sh   
  5. #   
  6. # JavaKeyStore test program -- import privatekey&cert from openssl   
  7. #   
  8.   
  9. set -x   
  10.   
  11. # -- force cleanup   
  12. rm -f newkeystore *.class *.der *.pem *~   
  13.   
  14. # -- fetch openssl prepared privatekey & cert   
  15. SOMEWHERE=$1   
  16. cp $SOMEWHERE/client-private.pem  .   
  17. cp $SOMEWHERE/client-cert.pem  .   
  18.   
  19. # -- pem -> der conversion   
  20. openssl x509 -in client-cert.pem -out client-cert.der -outform der   
  21. openssl rsa -in client-private.pem -out client-private-rsa.der -inform pem -outform der   
  22. openssl pkcs8 -topk8 -in client-private-rsa.der -inform der -out client-private.der -outform der -nocrypt   
  23.   
  24. # -- compile && exec   
  25. javac -classpath . CreateKeyStore.java &&   
  26. java -classpath . CreateKeyStore paSsword pasSword newkeystore thatsme client-private.der client-cert.der    
  27.   
  28. # -- show it (cert part)   
  29. keytool -v -list -storepass paSsword -keypass pasSword -keystore newkeystore   
  30.   
  31. # -- show it (key part)   
  32. javac -classpath . GetPrivateKey.java &&   
  33. java -classpath . GetPrivateKey paSsword pasSword newkeystore thatsme |   
  34. openssl pkcs8 -inform der -nocrypt -outform pem |   
  35. openssl rsa -text   
  36.   
  37. # -- delete intermediate files   
  38. rm -f *.class *.der *.pem *~  

 

·미리보기 | 소스복사·
 
  1. ::::::::::::::::::::::::::::   
  2. :: CreateKeyStore.java   
  3. ::::::::::::::::::::::::::::   
  4. /*  
  5.  * $ javac -classpath . CreateKeyStore.java  
  6.  * $ java -classpath . CreateKeyStore storepass keypass newkeystorename alias keyin certin  
  7.  *  
  8.  * ref:  
  9.  * j2sdk1_4_0/j2se/src/share/classes/sun/security/tools/KeyTool.java  
  10.  * j2sdk1_4_0/j2se/src/share/classes/sun/security/provider/JavaKeyStore.java  
  11.  * j2sdk1_4_0/j2se/src/share/classes/java/security/KeyStore.java  
  12.  */  
  13. import java.io.File;   
  14. import java.io.FileInputStream;   
  15. import java.io.DataInputStream;   
  16. import java.io.FileOutputStream;   
  17. import java.security.Key;   
  18. import java.security.KeyStore;   
  19. import java.security.PrivateKey;   
  20. import java.security.KeyFactory;   
  21. import java.security.cert.Certificate;   
  22. import java.security.cert.CertificateFactory;   
  23. import java.security.cert.X509Certificate;   
  24. import java.security.interfaces.RSAPrivateKey;   
  25. import java.security.spec.PKCS8EncodedKeySpec;   
  26. public class CreateKeyStore {   
  27.   public static void main(String[] args) throws Exception {   
  28.     /*   
  29.      * variables  
  30.      */  
  31.     String spass = args[0];   
  32.     String kpass = args[1];   
  33.     String keystore = args[2];   
  34.     String alias = args[3];   
  35.     String keyin = args[4];   
  36.     String certin = args[5];   
  37.     /*  
  38.      * load given private key  
  39.      */  
  40.     KeyFactory kf = KeyFactory.getInstance("RSA");   
  41.     File f = new File(keyin);   
  42.     byte[] b = new byte[(int) f.length()];   
  43.     DataInputStream i = new DataInputStream(new FileInputStream(f));   
  44.     i.readFully(b);   
  45.     i.close();   
  46.     Key key = kf.generatePrivate(new PKCS8EncodedKeySpec(b));   
  47.     /*  
  48.      * load given certificate  
  49.      */  
  50.     FileInputStream in = new FileInputStream(certin);   
  51.     CertificateFactory cf = CertificateFactory.getInstance("X509");   
  52.     X509Certificate cert = (X509Certificate) cf.generateCertificate(in);   
  53.     in.close();   
  54.     /*  
  55.      * create a fresh keystore with given privatekey and certificate   
  56.      */  
  57.     KeyStore ks = KeyStore.getInstance("JKS");   
  58.     ks.load(null, null);        // <= means ``inititlize''   
  59.     ks.setKeyEntry(alias, key, kpass.toCharArray(), new Certificate[] { cert, });   
  60.     FileOutputStream os = new FileOutputStream(keystore);   
  61.     ks.store(os, spass.toCharArray());   
  62.     os.close();   
  63.   }   
  64. }  
·미리보기 | 소스복사·
 
  1. ::::::::::::::::::::::::::::   
  2. :: GetPrivateKey.java   
  3. ::::::::::::::::::::::::::::   
  4. /*  
  5.  * $ javac GetPrivateKey.java  
  6.  * $ java GetPrivateKey storepass keypass keystore alias >key.out  
  7.  */  
  8. import java.security.KeyStore;   
  9. import java.security.Key;   
  10. import java.io.FileInputStream;   
  11. public class GetPrivateKey {   
  12.   public static void main(String[] args) throws Exception {   
  13.     String spass = args[0];   
  14.     String kpass = args[1];   
  15.     String keystore = args[2];   
  16.     String alias = args[3];   
  17.     KeyStore ks = KeyStore.getInstance("JKS");   
  18.     FileInputStream fs = new FileInputStream(keystore);   
  19.     ks.load(fs, spass.toCharArray());   
  20.     Key key = ks.getKey(alias, kpass.toCharArray());   
  21.     System.out.write(key.getEncoded());   
  22.   }   
  23. }  

 

번호 제목 글쓴이 날짜 조회 수
공지 [계속 추가중] SBOM 용어 정의 황제낙엽 2025.04.10 21565
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의 황제낙엽 2024.02.02 20405
146 SPDX 2.3, 계속 써도 되나요? — 3.0으로 넘어갈 때를 판단하는 실무 기준 황제낙엽 2026.08.11 55
145 같은 OSS 지만 여러 버전을 등록해야 하는 경우 황제낙엽 2026.04.24 1972
144 [FOSSLight Dependency Scanner] Android Project 의 Dependency Scan 을 위한 Android SDK 설치와 설정 황제낙엽 2026.04.23 1843
143 FOSSLight Hub 의 REST API 이용 (v2) 황제낙엽 2026.03.19 2500
142 [FOSSLight/검토용] 개발그룹의 sbom-info.yaml 분석 및 피드백 절차 황제낙엽 2026.03.16 1983
141 [FOSSLight/관리용] Project Identification 진행에서 최종 SBOM SPDX 문서 추출 황제낙엽 2026.02.09 1917
140 [FOSSLight] 'Download Location' 컬럼 값에 'Different from DB' 라는 푸른색 메세지가 출력 file 황제낙엽 2026.02.06 3613
139 [FOSSLight] Project Identification 진행시의 신규 OSS 등록 처리 방법 황제낙엽 2026.02.06 3750
138 [FOSSLight Hub] License 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 3579
137 [FOSSLight Hub] Open Source 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 3352
136 [OSS] Microsoft.Web.WebView2 황제낙엽 2026.02.06 3352
135 [FOSSLight] fosslight 프로젝트의 'Pre-Review' > 'Open Source' 팝업창의 세 버튼에 대한 용도 황제낙엽 2026.02.06 3572
134 [FOSSLight/검토용] prechecker convert 결과 Hub 등록후 Identification 처리 file 황제낙엽 2026.02.05 3289
133 python venv 설치, fosslight source scanner , binary scanner 설치, 버전 확인 황제낙엽 2026.02.02 3508
132 SPDX 템플릿 다운로드 및 온라인 변환기 황제낙엽 2026.01.22 3870
131 SBOM(Software Bill of Materials) 및 소프트웨어 공급망 보안 관련 주요 정부 기관 및 단체 황제낙엽 2026.01.22 3605
130 [FOSSLight] online guide link 황제낙엽 2026.01.14 1844
129 identification 에서 출력하는 warning, error 메세지 황제낙엽 2025.12.29 1427
128 sbom-info.yaml 을 이용한 dependency scan excel 작성 file 황제낙엽 2025.12.29 3578
127 binary scan 결과물에 대해 취약점이 없는데 왜 SBOM에 넣어야 하나? 황제낙엽 2025.12.17 3484