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--> cacerts
JAVA를 사용.가 .HOME 의 인가 하면, HOME 의 어느 장소일 이 있습니다.
컴퓨터 --> 고급 --> 환경변수 --> JAVA_집입니다
서버 시작 배치 파일입니다.
Import 명령어 -keystore cacerts(여기에서는 cacerts라고만 말하지 않고 위의 JRE에 풀패스를 지정합니다).
키 스토어 위치
에는 "keytool"이 있습니다.-keystore
keytool에 의해 관리되는 키스토어의 영속적인 키스토어 파일의 이름과 위치를 지정하는 옵션입니다.으로는 '키스토어'라는됩니다..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
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가 설명한 바와 같이 기본적으로 키스토어는 사용자 디렉토리 아래에 있습니다.단, 업데이트하려는 경우cacerts
JVM이 키를 선택할 수 있도록 하려면 , 다음의 파일을 갱신할 필요가 있습니다.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
'sourcecode' 카테고리의 다른 글
Mac OS X에서 PHP를 업그레이드하는 방법은 무엇입니까? (0) | 2022.09.23 |
---|---|
JSON 데이터를 파일에 쓰려면 어떻게 해야 하나요? (0) | 2022.09.23 |
f-string의 newline '\n'을 사용하여 Python 3.6에서 출력을 포맷하는 방법은 무엇입니까? (0) | 2022.09.23 |
MariaDB에서 MySQL로의 이행 (0) | 2022.09.23 |
SQL 구문에 오류가 있습니다. 올바른 구문은 MariaDB 서버 버전에 해당하는 설명서를 참조하십시오. (0) | 2022.09.23 |