암호화 이벤트 해석
관리자는 암호화 이벤트 분석을 사용하여 사용 중인 Java 보안 라이브러리의 암호화 알고리즘에 대한 자세한 정보를 얻을 수 있습니다. JMS는 사용 중인 알고리즘을 계획된 변경 사항과 비교하고 향후 변경 사항 또는 만료 예정인 인증서의 영향을 받을 수 있는 애플리케이션을 강조 표시합니다.
이 분석은 관리 인스턴스의 Java 애플리케이션이 변경될 알고리즘, 키 길이 또는 기본값을 사용하고 있는지 여부를 감지하고 중단을 방지하기 위한 권장 사항을 제공합니다.
OCI 클라우드 콘솔
- OCI 콘솔에 관리자로 사인인합니다.
- 탐색 메뉴를 열고 관찰 가능성 및 관리를 누른 다음 Java 관리에서 플리트를 누릅니다.
- 플리트를 선택합니다.
- 작업을 누르고 메뉴에서 암호화 이벤트 분석을 선택합니다.
- 시작을 누릅니다.
- 작업 요청이 완료되면 Crypto 분석 보고서를 클릭합니다.
OCI CLI
- 다음 명령을 실행합니다.
oci jms fleet request-crypto-analyses --fleet-id $FLEET_OCID
주:
암호화 분석을 수행하려면 TLS 핸드셰이크와 같은 암호화 관련 이벤트를 생성하는 응용 프로그램을 실행해야 합니다. 특정 관리 인스턴스에서만 암호화 분석을 실행하려면 아래 예제와 같이 대상 매개변수를 사용합니다.
예
우리는 약한 알고리즘 SHA1withRSA 및 약한 1024 비트 키 크기의 짧은 생활 인증서로 구성 될 두 개의 간단한 Spring Boot 클라이언트 / 서버 응용 프로그램에서이 기능을 보여줍니다. 간소화를 위해 두 애플리케이션 모두 하나의 관리 인스턴스에서 실행됩니다.
주:
예제 응용 프로그램은 https://github.com/jirkafm/spring-tls-example에서 검색할 수 있습니다.#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
# start crypto analysis on specified managed instance
WORK_REQUEST_OCID=$(oci jms fleet request-crypto-analyses \
--fleet-id "$FLEET_OCID" \
--targets "[{\"managedInstanceId\":\"$MANAGED_INSTANCE_OCID\"}]" | jq -r '."opc-work-request-id"')
echo $WORK_REQUEST_OCID
# additionally you can add your own logic to check if work request is finished
# sleep 600
# oci jms work-request get --work-request-id "$WORK_REQUEST_OCID" | jq .data.status
이제 응용 프로그램을 실행하고 클라이언트 응용 프로그램에 대한 API 호출을 거의 수행하지 않습니다.
$ java -jar spring-tls-client-1.1.0.jar &!
$ java -jar spring-tls-server-1.1.0.jar &!
$ BOOK_ID=$(curl -kX POST -H "Content-Type: application/json" -d "{ \"title\": \"AwesomeBook\", \"author\":\"AwesomeAuthor\" }" https://localhost:7081/client/books/ | jq -r '.id')
$ curl -k https://localhost:7081/client/books/$BOOK_ID
{"title":"AwesomeBook","author":"AwesomeAuthor","id":"d4131bd9-76f0-48cf-9c33-9089a232c865"}
작업 요청이 완료되면 암호화 분석 결과를 확인할 수 있습니다.
#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
WORK_REQUEST_OCID=ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaa7lxtmzmv2nt72fcnfwbo67xvffvuypnj4ca5hhky7kko2d4flvxq
ocijms crypto-analysis-result list \
--sort-by timeCreated \
--sort-order DESC \
--limit 10 \
--managed-instance-id "$MANAGED_INSTANCE_OCID" \
--fleet-id "$FLEET_OCID" | jq ".data.items[] | select(.\"work-request-id\"==\"$WORK_REQUEST_OCID\")"
{
"aggregation-mode": "MANAGED_INSTANCE",
"bucket-name": "jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"crypto-roadmap-version": "2024-10-15",
"finding-count": 56,
"fleet-id": "ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"host-name": "jms-demo",
"id": "ocid1.jmsreport.oc1.eu-frankfurt-1.amaaaaaalzyjypyaiaitxhgw4rwkcnjmu3tlqe67mtxdleful7znqr55bvwq",
"managed-instance-id": "ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq",
"namespace": "frmss8xk2qta",
"non-compliant-finding-count": 12,
"object-name": "JMS/ANALYSIS/CRYPTO/RESULTS/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/CryptoAnalysisResultMerged-20250714094729-ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaa7lxtmzmv2nt72fcnfwbo67xvffvuypnj4ca5hhky7kko2d4flvxq-013a1cb4-1e64-4ac9-959a-ddb057d49257.json",
"summarized-event-count": 36,
"time-created": "2025-07-14T09:47:29.430000+00:00",
"time-finished": "2025-07-14T09:39:18+00:00",
"time-first-event": "2025-07-14T09:29:52.106000+00:00",
"time-last-event": "2025-07-14T09:30:52.709000+00:00",
"time-started": "2025-07-14T09:28:29+00:00",
"total-event-count": 43,
"work-request-id": "ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaa7lxtmzmv2nt72fcnfwbo67xvffvuypnj4ca5hhky7kko2d4flvxq"
}
결과적으로, 우리는 우리의 관심을 필요로하는 응용 프로그램에 결과가 있음을 볼 수 있습니다. 자세한 내용을 보려면 다음 API 호출을 실행하여 JSON 보고서를 다운로드하거나 JMS OCI Cloud 콘솔에서 보다 인간적인 형태로 보고서를 확인할 수 있습니다.
# namespace, bucket-name and name parameters were taken from the report payload mentioned above
# we will filter events only for spring-tls-server-1.1.0.jar application
oci os object get \
--namespace frmss8xk2qta \
--bucket-name jms_ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta \
--name JMS/ANALYSIS/CRYPTO/RESULTS/ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta/ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq/CryptoAnalysisResultMerged-20250714094729-ocid1.jmsworkrequest.oc1.eu-frankfurt-1.aaaaaaaa7lxtmzmv2nt72fcnfwbo67xvffvuypnj4ca5hhky7kko2d4flvxq-013a1cb4-1e64-4ac9-959a-ddb057d49257.json --file - | jq '.applications[] | select(.applicationName == "spring-tls-server-1.1.0.jar")'
...
{
"summarizedCryptoEvent": {
"eventType": "X509CertificateEvent",
"occurrences": 1,
"timeFirstEvent": "2025-07-14T09:30:42.203961324Z",
"timeLastEvent": "2025-07-14T09:30:42.203961324Z",
"event": {
"eventType": "X509CertificateEvent",
"startTime": "2025-07-14T09:30:42.203961324Z",
"algorithm": "SHA1withRSA",
"serialNumber": "2c0fb97d",
"subject": "CN=Client, OU=Server, O=test, L=Portland, ST=OR, C=US",
"issuer": "CN=Client, OU=Server, O=test, L=Portland, ST=OR, C=US",
"keyType": "RSA",
"keyLength": 1024,
"certificateId": 3057353200,
"validFrom": "2025-07-14T08:00:55Z",
"validUntil": "2025-07-17T08:00:55Z"
}
},
"findings": [
{
"detectorName": "Certificate will expire soon",
"severity": "WARN"
},
{
"detectorName": "Removed root certificates with 1024-bit keys",
"severity": "ERROR",
"detailsLink": "https://www.java.com/en/configure_crypto.html#RemoveRootCert"
},
{
"detectorName": "SHA-1 signature",
"severity": "WARN",
"detailsLink": "https://www.java.com/en/configure_crypto.html#WarnWeakAlgorithms"
},
{
"detectorName": "RSA recommended key size",
"severity": "WARN",
"detailsLink": "https://www.java.com/en/configure_crypto.html#defKeySize"
}
]
}
...