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


129

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)

keytool실행 한 정확한 명령을 게시 할 수 있습니까? 여기서 명백한 문제 중 일부는 -keystore인수 의 오타와 keytool이 키를 가져올 키 저장소를 찾을 수 없다는 사실입니다
Alex

필자는 다음과 같이 작성하려고했습니다. keytool -import -alias downloadCertAlias ​​-keystore C : \ path \ to \ my \ keystore \ cacerts.file -file C : \ path \ of \ exportedCert.cer 또한 오류없이 실행 된 명령을 언급 했으므로 분명히 이것은 내 질문의 철자 오류입니다 !!! 어쨌든 감사합니다
cyber101

답변:


268

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


9
Mac 사용자의 경우 간단한 sudo로이 문제를 해결할 수 있습니다.
truthful_ness

13
관리자로 실행하는 것은 올바른 솔루션이 아닙니다. 대부분의 회사는 관리자 액세스를 차단하고 있습니다. 권한을 높이기보다는 액세스가 거부 된 이유를 수정하는 것이 좋습니다.
skword

cmd를 Ctrl 키 + 시프트 + 입력하고 추가 인증서 successfully- 그것은 나를 위해 일한 공격 유형
데드 엔드

감사. control-shift CMD는 내가 cacerts 저장소를 변경할 수있는 유일한 방법이었습니다.
Malcolm Boekhoff

@Afshar 나는 꽤 오랫동안 이것으로 어려움을 겪어 왔습니다.
Rajan Chauhan

21

Windows에서 동일한 문제가 발생했으며 cmd.exe를 관리자실행 하여 해결할 수있었습니다 (시작 메뉴에서 마우스 오른쪽 버튼을 클릭 한 다음 " 관리자 권한으로 실행).


19

로컬 키 저장소에서 인증서를 가져 오는 동안 동일한 문제가 발생했습니다. 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 매개 변수 값에만 "를 .

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


1
여기에 언급 한 바와 같이, 실제로 존재 보안 디렉토리 대신 전체 경로의 CERT의 "cacerts에"이름을 지정하는 것은 나를 위해 일한 것을이었다.
risingTide

저는 sudo -i를 사용하여 Mac의 첫 번째 단계에서 자신을 수퍼 유저로 만들고 단계를 따랐습니다. carets 파일을 텍스트 파일로 열고 이름 (또는 인증서와 관련된 다른 모든 항목)을 검색하는 명령 f를 수행하여 인증서를 찾았습니다.
Chigozie A. 19-06-27

11

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


2
누구든지 이것을 확장 할 수 있다면 권한을 확인하는 것만으로 아무것도 변경되지 않습니다.
user3071284

tomcat 디렉토리를 읽기 전용으로 설정하면이 예외가 발생합니다
svarog

Weite 허가를 확인하는 방법?
Ahmad Arslan

3

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


1

windows8을 사용하는 경우 :

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

1

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

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

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


0

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

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

keytool에 대한 경로가 시스템 경로에없는 경우 keytool을 사용하려면 전체 경로를 사용해야합니다.

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

따라서 명령은 다음과 같아야합니다.

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

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


0

관리자로 cmd를 실행 해도이 오류가 발생했습니다.

근본 원인은 다음과 같습니다. 파일은 VCS (subversion, perforce 등)에서 가져온 것이며이 파일의 속성을 확인했을 때 해당 속성은 읽기 전용입니다. 입니다.

따라서 해결책은 다음과 같습니다.

  • (1) '읽기 전용'속성 비활성화
  • (2) VCS에서 체크 아웃하고 파일을 읽기 및 쓰기 상태로 둡니다.

-1

해결

  1. CMD를 관리자로 실행하기 만하면됩니다.
  2. 올바른 신뢰 저장소 비밀번호를 사용하고 있는지 확인하십시오.

-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

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.