참고 링크 : orthanc book
dicom 파일 전송이 필요한 경우 DIMSE 프로토콜을 사용하기 위해 주로 dcmtk를 활용하고 있었다.
여기에 TLS 적용이 필요하게 되었는데, dcmtk와 tls를 검색어로 하여 검색을 해보다 보니 예제가 꽤 있긴 하였으나 key file 활용을 어떻게 해야하는지에 대해서는 잘 이해가 가질 않았다. 그런 도중 지인을 통해 orthanc book link를 받았고, 해당 링크의 가이드와 storescu --help 옵션 리스트를 참고하여 tls 적용 테스트를 해보게 되었다.
테스트는 성공하였으나, 사용방법 외 아직 모르는 부분이 많아서 일단 테스트 해봤던 내용 먼저 기록해 보려고 한다.
(1) openssl 로 key 생성하기
일단 TLS를 위해서는 private key와 public key(certification)의 key pair가 필요하다.
(centos7 서버에 openssl이 설치가 되어 있었기 때문에 따로 openssl 설치 방법은 생략)
그리고 각 client와 server는 서로의 공개키(=public key)를 사전에 share하고 있어야 하는 구조로 보인다.
(HTTPS에서는 TCP Socket Connection 과정 중 public key가 client에 전달되는 구조인데 DICOM protocol 에서는 그런 구조가 아니라 사전에 public key를 share하고 있어야 하는 것 같다. 이 부분이 dcmtk를 사용함에 있어서의 제약인 것인지 다른 option이나 사용 시나리오가 있는 것인지 잘 모르겠다. 아시는 분 계시면 좀 알려주세요..)
1) ORTHANC PACS key pair 생성 (ORTHANC PACS에서 사용할 key pair / public key는 Client에 사전 배포 필요)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout orthanc.key -out orthanc.crt -subj "/C=BE/CN=localhost"
2) dcmtk key pair 생성 (public key를 ORTHANC PACS에 TrustedCertificate로 등록 예정)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout dcmtk.key -out dcmtk.crt -subj "/C=BE/CN=localhost"
3) test key pair 생성 (ORTHANC PACS에 사전 등록되지 않은 key)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout test.key -out test.crt -subj "/C=BE/CN=localhost"
< test.key 파일 일부 캡쳐 >
< test.crt 파일 일부 캡쳐 >
(2) ORTHANC PACS에 TLS enable 및 key 파일 적용
1) docker-compose.yml
orthanc.json 파일에 추가한 key 파일을 docker volume을 활용해 container에 등록
2) orthanc.json
파일에 아래의 설정을 추가하여 TLS를 enable 하고, ORTHANC PACS의 private key, publick key, 그리고 신뢰할 수 있는 dcmtk의 public key를 추가한다.
"DicomTlsEnabled" : true,
"DicomTlsCertificate" : "/etc/orthanc/orthanc.crt",
"DicomTlsPrivateKey" : "/etc/orthanc/orthanc.key",
"DicomTlsTrustedCertificates" : "/etc/orthanc/dcmtk.crt",
(3) dcmtk : storescu로 dicom 전송
1) orthanc에 등록된 dcmtk key를 my key로 설정하여 전송 -> 전송 성공
storescu 10.120.1.40 4242 ./test.dcm +tls ./dcmtk.key ./dcmtk.crt +cf ./orthanc.crt -aet test -ll debug
2) orthanc에 등록되지 않은 test key를 my key로 설정하여 전송 -> 전송 실패
storescu 10.120.1.40 4242 ./test2.dcm +tls ./test.key ./test.crt +cf ./orthanc.crt -aet test -ll debug
** ORTHANC PACS에 여러 client의 public key를 등록하려면,
등록하고자 하는 N 개의 public key a.crt, b.crt, c.crt 를 준비하고 아래의 명령어로 all.crt 를 생성
cat a.crt b.crt c.crt > all.crt
'Engineering > DICOM, DIMSE Protocol, HL7' 카테고리의 다른 글
[Weasis] Import dicom from PACS (dicom-web) in weasis viewer (with ORTHANC PACS) (0) | 2023.02.06 |
---|---|
dcmtk / gdcm : DICOM Transfer Syntax 변환 (0) | 2022.07.09 |
dcmtk : dcmqrscp 로 DICOM Query/Retrieve 테스트 (C-FIND, C-MOVE) (0) | 2022.02.07 |
Linux(CentOS)에 dcmtk 설치하기 (0) | 2021.11.04 |
ORTHANC PACS : DICOM Query/Retrieve(C-FIND, C-MOVE, C-STORE) 테스트 환경 구성하기 (docker-compose) (0) | 2021.08.06 |
댓글