인증서를 가져온 후 Java Keytool 오류, "keytool 오류 : java.io.FileNotFoundException & 액세스 거부"
HTTPS를 통해 Java Web API를 연결하려고합니다. 그러나 예외가 발생합니다.
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
온라인 키 도구 및 SSL 인증서 자습서에서 배운 다음 단계를 수행했습니다.
HTTPS URL을 브라우저에 복사하고 SSL 인증서를 다운로드하여 Internet Explorer를 사용하여 브라우저에 설치했습니다.
인증서를 내 컴퓨터의 경로로 내보냈으며 인증서는 다음과 같이 저장되었습니다.
.cer
keytool의 가져 오기 옵션을 사용했습니다. 아래 명령은 오류없이 실행되었습니다.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
명령 프롬프트에서 암호를 입력하라는 메시지가 표시되면 입력 한 후 인증을 받았습니다.
이
cmd
창에는 일부 인증서 데이터 및 서명이 인쇄되었으며 다음과 같은 질문이 표시되었습니다.이 인증서를 믿습니까?
나는 대답했다.
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을 사용하는 경우 :
- 시작 버튼을 클릭하십시오
- 검색 창에
command prompt
- 결과에서 마우스 오른쪽 단추를 클릭
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를 마우스 오른쪽 단추로 클릭하고 특성을 선택한 후 보안 탭 선택> 모든 그룹 및 사용자 이름에 대한 모든 권한 허용을 선택하십시오.
이것은 나를 위해 일했습니다.
해결
- CMD를 관리자 권한으로 실행하십시오.
- 올바른 신뢰 저장소 비밀번호를 사용하십시오.
디스크 나 경로 (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
'IT박스' 카테고리의 다른 글
Intellij IDEA에서 텍스트를 새 줄로 바꾸려면 어떻게합니까? (0) | 2020.08.03 |
---|---|
build.gradle에 maven 저장소 추가 (0) | 2020.08.03 |
URL / 전화 클릭 가능 UILabel을 만드는 방법은 무엇입니까? (0) | 2020.08.03 |
ActiveMQ는 무엇에 사용됩니까? (0) | 2020.08.03 |
java.lang.NoClassDefFoundError : Java 메일 용 JUnit 테스트 케이스의 경우 com / sun / mail / util / MailLogger (0) | 2020.08.03 |