programing

증명서를 Import한 후 Java Keytool 오류가 발생했습니다.keytool error : java.ioFile Not Found Exception 및 접근 거부"

copyandpastes 2022. 7. 3. 18:40
반응형

증명서를 Import한 후 Java Keytool 오류가 발생했습니다.keytool error : java.ioFile Not Found Exception 및 접근 거부"

HTTPS를 통해 Java Web API를 연결하려고 하는데 예외가 발생했습니다.

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

온라인 키툴과 SSL 인증 튜토리얼에서 배운 다음 절차를 따릅니다.

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

  2. 때 는 「경로」로 ..cer

  3. 키툴 Import 옵션 사용.다음 명령은 오류 없이 실행되었습니다.

    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)

0:01

로컬 키스토어에서 인증서를 가져오는 동안 동일한 문제가 발생했습니다.keytool 명령어를 발행할 때마다 다음과 같은 오류가 발생합니다.

증명서가 keystore keytool 오류에 추가되었습니다.java.ioFileNotFoundException:C:\Program Files\Java\jdk1.8.0_151\jre\lib\security(접근 거부)

저는 다음 솔루션이 효과적입니다.

1) 관리자 모드로 명령 프롬프트를 실행하고 있는지 확인합니다.

2) 현재 디렉토리를 %J로 변경합니다.AVA_HOME%\jre\lib\security

3) 다음 명령어를 발행합니다.

keytool -import -alias "mycertifiedemo" -file "C:\Users\name\Downloads\abc.crt" - keystore cacerts

3) 패스워드 변경

4) y를 입력합니다.

5) "Certificate was added to keystore" (증명서가 키스토어에 추가되었습니다)라는 메시지가 나타납니다.

"C**:\Program Files\Java\jdk1.8.0_151\jre\lib\security**"와 같은 풀 경로를 지정했으므로 "cacerts"는 반드시 -keystore param value로만 지정합니다.

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

Windows에서도 같은 문제가 발생했기 때문에 cmd.exe를 Administrator로 실행하여 해결할 수 있었습니다(시작 메뉴에서 마우스 오른쪽 버튼을 클릭한 후 "관리자로서 실행").

키 저장소의 쓰기 권한을 확인합니다.

Mac 사용자의 경우 sudo를 수행하고 메시지가 나타나면 먼저 관리자 암호를 입력한 다음 키 저장소 암호를 입력합니다. 이 암호는 실제로 변경하지 않는 한 일반적으로 "변경"되어야 합니다.

Windows 8 을 사용하고 있는 경우:

  1. [시작] 버튼을 클릭합니다.
  2. 검색 상자에 다음을 입력합니다.command prompt
  3. 결과에서 마우스 오른쪽 버튼을 클릭합니다.command prompt를 클릭합니다.Run as administrator그런 다음 keytool 명령을 실행합니다.

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

cacerts > choose properties > securit 탭 > Allow all permissions to all the Group and user name 순으로 클릭합니다.

이건 나한테 효과가 있었어.

관리자 신분으로 cmd를 실행해도 이 오류가 발생하였습니다.

근본 원인은 다음과 같습니다.이 파일은 VCS(서브버전, perforce 등)에서 가져온 것으로, 이 파일의 속성을 확인했더니 '속성'이 읽기 전용입니다.

해결책은 다음과 같습니다.

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

Administrator로 명령 프롬프트를 실행해도 다음 오류가 발생하여 동작하지 않습니다.

'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

잘 먹혔어요.

반드시 Administrator로 실행해 주세요.Mac 터미널:-

  1. sudo 실행 -i
  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

여기에 이미지 설명 입력

해결된

  1. 관리자 권한으로 CMD를 실행합니다.
  2. 올바른 트러스트 스토어 패스워드를 사용하고 있는지 확인합니다.

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

반응형