IT박스

인증서를 가져온 후 Java Keytool 오류, "keytool 오류 : java.io.FileNotFoundException & 액세스 거부"

itboxs 2020. 8. 3. 08:39
반응형

인증서를 가져온 후 Java Keytool 오류, "keytool 오류 : java.io.FileNotFoundException & 액세스 거부"


HTTPS를 통해 Java Web API를 연결하려고합니다. 그러나 예외가 발생합니다.

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException

온라인 키 도구 및 SSL 인증서 자습서에서 배운 다음 단계를 수행했습니다.

  1. HTTPS URL을 브라우저에 복사하고 SSL 인증서를 다운로드하여 Internet Explorer를 사용하여 브라우저에 설치했습니다.

  2. 인증서를 내 컴퓨터의 경로로 내보냈으며 인증서는 다음과 같이 저장되었습니다. .cer

  3. keytool의 가져 오기 옵션을 사용했습니다. 아래 명령은 오류없이 실행되었습니다.

    keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
    
  4. 명령 프롬프트에서 암호를 입력하라는 메시지가 표시되면 입력 한 후 인증을 받았습니다.

  5. cmd창에는 일부 인증서 데이터 및 서명이 인쇄되었으며 다음과 같은 질문이 표시되었습니다.

    이 인증서를 믿습니까?

    나는 대답했다.

  6. cmd 프롬프트가 표시되었습니다.

    인증서가 키 저장소에 추가되었습니다

    그러나 그 메시지 후에 다른 예외가 표시되었습니다.

    keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
    

마지막으로 keystore를 확인했을 때 SSL 인증서가 추가되지 않았으며 응용 프로그램은 연결하려고 할 때 이전과 동일한 예외를 제공합니다.

(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)

관리자 모드에서 명령 프롬프트를 실행하지 않는 경우 발생할 수 있습니다. Windows 7을 사용하는 경우 실행으로 이동하여 cmd를 입력하고 Ctrl + Shift + Enter를 누르십시오. 관리자 모드에서 명령 프롬프트가 열립니다. 그렇지 않으면 시작-> 모든 프로그램-> 액세서리-> 명령 프롬프트를 마우스 오른쪽 버튼으로 클릭하고 '관리자로 실행'을 클릭하십시오.


Windows에서 같은 문제가 발생하여 관리자로 cmd.exe를 실행 하여 문제를 해결할 수 있습니다 (시작 메뉴에서 마우스 오른쪽 단추를 클릭 한 다음 " 관리자 권한으로 실행").


로컬 키 저장소에서 인증서를 가져 오는 동안 동일한 문제가 발생했습니다. keytool 명령을 실행할 때마다 다음 오류가 발생했습니다.

키 저장소 키 도구 오류에 인증서가 추가되었습니다. java.io.FileNotFoundException : C : \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security (액세스가 거부 됨)

다음 해결책이 나를 위해 일합니다.

1) Rus에서 관리자 모드로 명령 프롬프트를 실행하고 있는지 확인하십시오.

2) 현재 디렉토리를 % JAVA_HOME % \ jre \ lib \ security로 변경하십시오.

3) 그런 다음 아래 명령을 발행하십시오.

keytool-가져 오기-별칭 "mycertificatedemo"-파일 "C : \ Users \ name \ Downloads \ abc.crt"-keystore cacerts

3) 비밀번호 변경

4) y를 입력하십시오

5) "인증서가 키 저장소에 추가되었습니다"라는 메시지가 표시됩니다.

"C ** : \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security **"와 같은 전체 경로를 제공 했으므로 -keystore 매개 변수 값으로 만 " cacerts "를 제공하십시오.

이것이 효과가 있기를 바랍니다.


키 저장소에 대한 쓰기 권한을 확인하십시오.


Mac 사용자의 경우 sudo를 입력하고 프롬프트가 표시되면 관리자 비밀번호를 제공하고 실제로 비밀번호를 변경하지 않는 한 일반적으로 "changeit"이어야하는 키 저장소 비밀번호가 표시됩니다.


windows8을 사용하는 경우 :

  1. 시작 버튼을 클릭하십시오
  2. 검색 창에 command prompt
  3. 결과에서 마우스 오른쪽 단추를 클릭 command prompt하고을 클릭하십시오 Run as administrator. 그런 다음 keytool 명령을 실행하십시오.

관리자 권한으로 명령 프롬프트를 실행했지만 아래 오류로 인해 작동하지 않았습니다.

'keytool' is not recognized as an internal or external command,
 operable program or batch file.

키 도구의 경로가 시스템 경로에없는 경우 키 도구를 사용하려면 전체 경로를 사용해야합니다.

C:\Program Files\Java\jre<version>\bin

따라서 명령은

"C:\Program Files\Java\jre<version>\bin\keytool.exe" -importcert -alias certificateFileAlias -file CertificateFileName.cer -keystore cacerts

그것은 나를 위해 일했다.


PowerShell을 사용할 때 Windows 10에서 동일한 문제가 있지만 cmd를 사용하는 경우 작동합니다.


이 문제를 해결할 권한을 자신에게 부여 할 수 있습니다.

cacerts를 마우스 오른쪽 단추로 클릭하고 특성을 선택한 후 보안 탭 선택> 모든 그룹 및 사용자 이름에 대한 모든 권한 허용을 선택하십시오.

이것은 나를 위해 일했습니다.


해결

  1. CMD를 관리자 권한으로 실행하십시오.
  2. 올바른 신뢰 저장소 비밀번호를 사용하십시오.

디스크 나 경로 (C가 아님)를 저장할 수 있습니다. EX : D \

C:\Program Files\Java\jre1.8.0_101\bin>keytool -genkey -alias server -keyalg RSA -keysize 2048 -keystore D:\myserver.jks -dname "CN=myserver,OU=IT-WebDev, O=TIACHOP, L=HCM, ST=0753, C=VN" && keytool -certreq -alias server -file D:\myserver.csr -keystore D:\myserver.jks

여기에 이미지 설명을 입력하십시오

참고 URL : https://stackoverflow.com/questions/10321211/java-keytool-error-after-importing-certificate-keytool-error-java-io-filenot

반응형