sourcecode

JVM이 사용하고 있는 키스토어를 확인하려면 어떻게 해야 합니까?

copyscript 2022. 9. 23. 00:06
반응형

JVM이 사용하고 있는 키스토어를 확인하려면 어떻게 해야 합니까?

증명서를 JVM 키스토어로 Import해야 합니다.다음을 사용하고 있습니다.

keytool -import -alias daldap -file somecert.cer

그래서 아마 제 전화를 다음과 같은 것으로 바꿔야 할 것 같습니다.

keytool -import -alias daldap -file somecert.cer -keystore cacerts –storepass changeit

.JAVA_HOME---> JRE -->lib---> security--> cacertsJAVA를 사용.가 .HOME 의 인가 하면, HOME 의 어느 장소일 이 있습니다.

  1. 컴퓨터 --> 고급 --> 환경변수 --> JAVA_집입니다

  2. 서버 시작 배치 파일입니다.

Import 명령어 -keystore cacerts(여기에서는 cacerts라고만 말하지 않고 위의 JRE에 풀패스를 지정합니다).

키 스토어 위치

에는 "keytool"이 있습니다.-keystorekeytool에 의해 관리되는 키스토어의 영속적인 키스토어 파일의 이름과 위치를 지정하는 옵션입니다.으로는 '키스토어'라는됩니다..keystore"user.home" 시스템속성에 의해 결정되는 사용자의 홈디렉토리에 저장됩니다. 이름으로 "user.home"으로 설정됩니다.

C:\Users\uName on Windows 7 systems
C:\Winnt\Profiles\uName on multi-user Windows NT systems
C:\Windows\Profiles\uName on multi-user Windows 95 systems
C:\Windows on single-user Windows 95 systems

따라서 사용자 이름이 "cathy"일 경우 "user.home"은 기본적으로

C:\Users\cathy on Windows 7 systems
C:\Winnt\Profiles\cathy on multi-user Windows NT systems
C:\Windows\Profiles\cathy on multi-user Windows 95 systems

https://docs.oracle.com/en/java/javase/17/docs/specs/man/keytool.html#importing-a-certificate-for-the-ca

Java 1.8이 설치된 Mac OS X 10.12:

$JAVA_HOME/jre/lib/security

cd $JAVA_HOME

/Library/Java/JavaVirtual Machines/jdk1.8.0_40.jdk/콘텐츠/홈

여기서부터 다음 내용이 됩니다.

./jre/lib/security

저 안에 열쇠 보관소가 있어요

이것을 VM 옵션으로 지정하려면:

-Djavax.net.ssl.trustStore=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=changeit

이것이 올바른 방법이라고는 말할 수 없지만(JAVA_HOME 내에서 Java를 찾을 수 없는 이유는 무엇입니까?), 저는 이 방법을 사용하기 위해 이렇게 해야 했습니다.

홈 디렉토리에서 찾을 수 있습니다.

Windows 7의 경우:

C:\Users\<YOUR_ACCOUNT>\.keystore

Linux(Ubuntu)의 경우:

/home/<YOUR_ACCOUNT>/.keystore

이것으로 충분합니다.

#! /bin/bin/s
CACERTS=$(readlink -e $(readlink -e $(which keytool)))/../lib/security/securts)
if keytool - list - keystore $CACERTS - storepass changeit > /dev/null ;에코$CACERTS또 다른echo 'Cannot find cacerts file' >& 2출구 1fi

Linux 전용.Solaris에는 readlink가 없습니다.마지막으로 이 Perl-Script를 사용했습니다.

#! /usr/bin/env perl엄격히 사용하다경고 사용Cwd qw(리얼패스)를 사용합니다.
$_ = realpath({-x & -f} 맵 {"$_/keytool"} splitflash:", $ENV{PATH})[0]);$_를 정의하지 않으면 die "키툴을 찾을 수 없습니다";내 $keytool = $_;"$keytool"을 사용하여 인쇄합니다.\n";s/keytool$//;$_ = realpath parames_ . '../lib/security/securts' ;
-f $_가 아닌 한 die "cannot cacerts";내 $secerts = $_;"$cacerts로 가져오기"를 인쇄합니다.\n";"$keytool -list -keystore "$certs" -storepass changeit";die "키 컨테이너를 읽을 수 없음"은 $가 아니면?== 0;$ARGV[0] eq '-d'인 경우 종료;포어치(@ARGV) {내 $cert = $_;s/\.[^.]+$//;내 $140 = $_;'$cert'를 '$alias'로 가져오기'를 인쇄합니다.\n";"keytool -importcert -file "$cert" -keystore "$certs" -storepass changeit";경고 "증명서 Import 불가: $?" ($ 이외에는)== 0;}

Debian에서는 openjdk 버전 "1.8.0_212"를 사용하여 다음과 같은 cacert를 발견했습니다.

 /etc/ssl/certs/java/cacerts

이 경로를 출력하는 표준 명령어가 있다면 편리할 것입니다.

DimtryB가 설명한 바와 같이 기본적으로 키스토어는 사용자 디렉토리 아래에 있습니다.단, 업데이트하려는 경우cacertsJVM이 키를 선택할 수 있도록 하려면 , 다음의 파일을 갱신할 필요가 있습니다.cacerts로 줄서다.jre/lib/security. 명령어를 실행하여 키를 표시할 수도 있습니다.keytool -list -keystore cacerts증명서가 추가되었는지 확인합니다.

공식 OpenJDK 12 Docker 이미지를 사용하는 경우 Java 키스토어의 위치는 다음과 같습니다.

/usr/java/openjdk-12/lib/security/cacerts

자동 jre 업데이트 후 (거의 완전히) 삭제된jre 디렉토리에서 실행 중인 Tomcat에서 이 문제가 발생했습니다.이 때문에 실행 중인 jre는 더 이상 jre.../lib/security/certs를 찾을 수 없었습니다.

Tomcat을 재부팅하면(다른 jre 위치에서 실행되도록 설정을 변경한 후) 문제가 해결되었습니다.

위의 모든 답변과 더불어:

JRE 디렉토리의 cacerts 파일을 업데이트해도 문제가 해결되지 않으면 JDK에서 업데이트해 보십시오.

C:\Program Files\Java\jdk1.8.0_192\jre\lib\security

언급URL : https://stackoverflow.com/questions/8980364/how-do-i-find-out-what-keystore-my-jvm-is-using

반응형