source

자바 키스토어에 .cer 증명서를 Import하려면 어떻게 해야 합니까?

factcode 2022. 8. 25. 23:45
반응형

자바 키스토어에 .cer 증명서를 Import하려면 어떻게 해야 합니까?

Java 웹 서비스 클라이언트를 개발하는 동안 문제가 발생했습니다.웹 서비스 인증에서는 클라이언트 증명서, 사용자 이름 및 비밀번호를 사용합니다.에 있는 는, 「고객 증명서」에 ..cer같은 이 있습니다.텍스트 에디터를 사용하여 파일을 검사하면 다음과 같은 내용이 있습니다.

-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----

이 파일을 Internet Explorer에서 증명서로 Import하여(비밀번호를 입력하지 않아도 됩니다!) 웹 서비스를 통한 인증에 사용할 수 있습니다.

이 증명서를 키스토어에 Import하려면 첫 번째 행과 마지막 행을 삭제하고 unix newlines로 변환하여 base64-decode를 실행합니다. 수 (「 Import」를 하고 있습니다).keytool명령)을 실행합니다., 이는 「」입니다.trustedCertEntry이 엔트리 타입(?)으로 인해 이 증명서를 사용하여 웹 서비스를 인증할 수 없습니다.제공된 인증서가 인증에 사용되는 공인 인증서라고 생각하기 시작했습니다.

입니다..pfx이 파일은 키스토어로 로드할 수 있으며 웹 서비스로 인증하는 데 사용할 수 있습니다.단, 고객이 새로운 증명서를 받을 때마다 이러한 절차를 수행할 것으로 기대할 수 없습니다. 저는 이 짐을 싣고 싶습니다..cer자바어슨슨생 슨??

추가 정보: 웹 서비스 배후에 있는 회사에서는 나중에 증명서를 Import할 PC 및 사용자에게 (IE 및 웹 사이트를 사용하여) 증명서를 요구해야 한다고 말했습니다.

  • 인증하려면 개인 키가 필요합니다. 다른 옵션은 없습니다.
  • 증명서는 첨부된 속성이 참임을 보증하는 일부 인증국에 의해 서명된 추가 속성(회사 이름, 국가 등)이 있는 공개 키입니다.
  • .CER이치노에는 「」가 ..PFX keystore정상적으로 파일을 작성합니다.인증이 실제로 이루어지는 경우 개인 키를 이미 Import했기 때문입니다.
  • 통상, Import 할 수 있습니다..CER

    keytool -importcert -file certificate.cer -keystore keystore.jks -alias "Alias" 
    

».cer브라우저로부터 다운로드된 증명서 파일(자세한 내용은 URL을 열고 참조)의 cacerts keystore에 저장합니다.java_home\jre\lib\security내 키스토어를 생성하고 사용하는 것과 달리, 나를 위해 일했습니다.

  1. 집으로 가세요.java_home\jre\lib\security
  2. (Windows) 를 사용하여 관리 명령줄을 엽니다.cmd및 ++SHIFTENTER
  3. 키툴
    • (환환))yourAliasName ★★★★★★★★★★★★★★★★★」path\to\certificate.cer□□□□□□□□★

 ..\..\bin\keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias yourAliasName -file path\to\certificate.cer

이렇게 하면 추가 JVM 옵션을 지정할 필요가 없으며 증명서는 JRE에 의해 인식됩니다.

이것은 새로운 KeyStore에 .cer 파일을 프로그램적으로 Import하기 위해 사용하고 있는 코드입니다.

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
//VERY IMPORTANT.  SOME OF THESE EXIST IN MORE THAN ONE PACKAGE!
import java.security.GeneralSecurityException;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;

//Put everything after here in your function.
KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null);//Make an empty store
InputStream fis = /* insert your file path here */;
BufferedInputStream bis = new BufferedInputStream(fis);

CertificateFactory cf = CertificateFactory.getInstance("X.509");

while (bis.available() > 0) {
    Certificate cert = cf.generateCertificate(bis);
    trustStore.setCertificateEntry("fiddler"+bis.available(), cert);
}

인증서를 변경할 필요가 없습니다.올바른 Import 명령을 실행하시겠습니까?

다음 사항이 효과적입니다.

keytool -import -alias joe -file mycert.cer -keystore mycerts -storepass changeit

mycert.cer에는 다음이 포함됩니다.

-----BEGIN CERTIFICATE-----
MIIFUTCCBDmgAwIBAgIHK4FgDiVqczANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
...
RLJKd+SjxhLMD2pznKxC/Ztkkcoxaw9u0zVPOPrUtsE/X68Vmv6AEHJ+lWnUaWlf
zLpfMEvelFPYH4NT9mV5wuQ1Pgurf/ydBhPizc0uOCvd6UddJS5rPfVWnuFkgQOk
WmD+yvuojwsL38LPbtrC8SZgPKT3grnLwKu18nm3UN2isuciKPF2spNEFnmCUWDc
MMicbud3twMSO6Zbm3lx6CToNFzP
-----END CERTIFICATE-----

오픈 소스 GUI 툴은 keystore-explorer.org 에서 구할 수 있습니다.

KeyStore 탐색기

KeyStore Explorer는 Java 명령줄 유틸리티 키툴과 jarsigner를 대체하는 오픈소스 GUI입니다.KeyStore Explorer는 직관적인 그래픽 사용자 인터페이스를 통해 기능 등을 제공합니다.

아래 화면은 도움이 됩니다(공식 사이트에서 입수).

다음 명령을 실행하면 나타나는 기본 화면:

shantha@shantha:~$./Downloads/kse-521/kse.sh

여기에 이미지 설명 입력

ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ로 .Examine ★★★★★★★★★★★★★★★★★」Examine a URLURL을 사용합니다.

구글 사이트 링크를 지정하시면 결과창은 아래와 같습니다.여기에 이미지 설명 입력

이것은 사용 사례 중 하나이며, 나머지는 사용자에게 달려 있습니다(모든 크레딧은 keystore-explorer.org에 있습니다).

이미 가지고 있는 인증서가 서버의 인증서이거나 서버의 인증서 서명에 사용된 인증서일 수 있습니다.웹 서비스 클라이언트가 서버를 인증할 수 있도록 하기 위해 필요합니다.

그러나 SSL을 사용하여 클라이언트 인증을 추가로 수행해야 하는 경우 웹 서비스 클라이언트를 인증하기 위해 자체 인증서를 가져와야 합니다.이를 위해서는 증명서 요구를 작성해야 합니다.이 프로세스에서는 독자적인 개인 키와 대응하는 공개 키를 작성하고, 그 공개 키와 함께 정보(이메일, 이름, 도메인 이름 등)를 증명서 요구라고 불리는 파일에 첨부합니다.그런 다음 이미 증명서 요청을 받은 회사에 보내면 개인 키로 공용 키에 서명하여 증명서를 만듭니다.그러면 증명서와 함께 X509 파일이 반환됩니다.이 파일은 키스토어에 추가할 수 있습니다.또한 CL이 필요한 SSL을 사용하여 웹 서비스에 접속할 수 있습니다.인증이 필요합니다.

인증서 요청을 생성하려면 "keytool -certreq -alias -file -keypass -keystore"를 사용하십시오.서명할 회사에 결과 파일을 보냅니다.

인증서를 받으면 "keytool -importcert -alias -keypass -keystore"를 실행합니다.

키스토어가 보호되고 있는 경우(좋은 방법)에는 두 경우 모두 -storepass를 사용해야 할 수 있습니다.

이것은 현재 디렉토리의 crt 파일을 자바 키스토어로 일괄 Import하기 위해 사용한 스크립트입니다.증명서와 같은 폴더에 저장하고 다음과 같이 실행합니다.

./import_all_certs.sh

import_all_certs.

KEYSTORE="$(/usr/libexec/java_home)/jre/lib/security/cacerts";

function running_as_root()
{
  if [ "$EUID" -ne 0 ]
    then echo "NO"
    exit
  fi

  echo "YES"
}

function import_certs_to_java_keystore
{
  for crt in *.crt; do 
    echo prepping $crt 
    keytool -import -file $crt -storepass changeit -noprompt --alias alias__${crt} -keystore $KEYSTORE
    echo 
  done
}

if [ "$(running_as_root)" == "YES" ]
then
  import_certs_to_java_keystore
else
  echo "This script needs to be run as root!"
fi

이 방법은 다음과 같습니다.

  1. 텍스트 편집기에서 다음 형식으로 인증서 데이터를 .txt로 저장합니다.

    -----BEGIN CERTIFICATE-----[Microsoft에 의해 시리얼화된 데이터]---END CERTIFICATE-------

  2. Chrome 브라우저를 엽니다(이 스텝은 다른 브라우저에서도 동작할 수 있습니다).> show advanced settings > HTTPS/SSL > manage certificates 스텝1에서 .txt를 Import합니다.
  3. 이 증명서를 Base-64 인코딩 형식으로 선택하여 내보냅니다..cer로 저장합니다.
  4. 이제 keytool 또는 Portecle을 사용하여 Java keystore로 Import할 수 있습니다.

좋은 답변이 많이 나왔지만, ssl 자료를 프로그램적으로 로드하기 위한 대안을 제시하고자 합니다.다음의 스니펫을 시험해 볼 수 있습니다.

Path certificatePath = Paths.get("/path/to/certificate.cer");
List<Certificate> certificates = CertificateUtils.loadCertificate(certificatePath);

SSLFactory sslFactory = SSLFactory.builder()
        .withTrustMaterial(certificates)
        .build();

SSLContext sslContext = sslFactory.getSslContext();

pem, der(바이너리) 및 p7b 형식의 파일을 처리할 수 있습니다.이 코드 스니펫의 예는 라이브러리에서 가져온 것입니다.GitHub - SSLContext Kickstart 다음 스니펫을 사용하여 추가할 수 있습니다.

<dependency>
    <groupId>io.github.hakky54</groupId>
    <artifactId>sslcontext-kickstart</artifactId>
    <version>7.0.2</version>
</dependency>

언급URL : https://stackoverflow.com/questions/4325263/how-to-import-a-cer-certificate-into-a-java-keystore

반응형