[java] 인증서 가져 오기 후 Java Keytool 오류,“keytool 오류 : java.io.FileNotFoundException & Access Denied”

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

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

온라인 keytool 및 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 명령을 실행할 때마다 다음 오류가 발생합니다.

키 저장소에 인증서가 추가되었습니다. 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 -import -alias “mycertificatedemo”-file “C : \ Users \ name \ Downloads \ abc.crt”-keystore cacerts

3) 암호 변경 제공

4) y 입력

5) “인증서가 키 저장소에 추가되었습니다”성공시 다음 메시지가 표시됩니다.

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

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


답변

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


답변

Mac 사용자의 경우 sudo를 확인하고 메시지가 표시되면 먼저 관리자 암호를 입력하십시오. 그러면 실제로 변경하지 않는 한 일반적으로 “changeit”이어야하는 키 저장소 암호가 뒤 따릅니다.


답변

windows8을 사용하는 경우 :

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

답변

이 문제를 해결할 수있는 권한을 부여 할 수 있습니다.

cacerts를 마우스 오른쪽 버튼으로 클릭> 속성 선택> 보안 탭 선택> 모든 그룹 및 사용자 이름에 대한 모든 권한 허용.

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