개요
- IIS에 HTTPS 를 적용한 과정을 정리
상황
- 폐쇄망 IP주소에 HTTPS 프로토콜을 적용해야 함
- 도메인 없는 상태로 해야 함..
- 로컬 PC에서 서버 PC로 접속했을 때 HTTPS 프로토콜로 통신할 수 있어야 함
- Windows IIS 서버에 인증서 등록해야 함
결과
준비물
- OpenSSL
- 중꺽마
적용 방법
OpenSSL 파일 다운받아서 설치한다. 그리고 그외 시스템 환경 변수를 세팅하는 과정이 있는데..생략하고..
CMD 창을 관리자 권한으로 열고 아래 순서대로 OpenSSL 명령어 입력한다
openssl genrsa -des3 -out myCA.key 2048 // CA 개인키 생성
openssl req -x509 -extensions v3_ca -new -nodes -key myCA.key -sha256 -days 730 -out myCA.pem -config CA.conf // CA Root 인증서 생성
openssl x509 -outform der -in myCA.pem -out myCA.crt // CA Root 인증서를 *.crt 파일 형식으로 변경
openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout localhost.key -out localhost.pem -config 개인이작성한Config파일.conf -sha256 // 도메인 개인키 생성
openssl req -new -key localhost.key -out localhost.csr -config 개인이작성한Config파일.conf // 도메인 인증서 서명 요청 파일 생성
openssl x509 -req -in localhost.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out localhost.crt -days 730 -sha256 -extfile 개인이작성한Ext파일.ext // CA 개인키 및 Root 인증서를 혼합하여 도메인 인증서 생성
openssl verify -CAfile myCA.pem -verify_hostname localhost localhost.crt // 도메인 인증서 적합성 체크(OK 뜨면 정상)
openssl pkcs12 -export -out PFX파일이름지정.pfx -inkey localhost.key -in localhost.crt -certfile CA.cer // IIS 서버에 넣을 pfx 파일 생성
파일 중 localhost.pfx, myCA.crt 는 서버 컴퓨터로 이동시키고 클라이언트 컴퓨터에는 myCA.crt 파일을 위치시킨다.
이 후 서버 IIS에서 인증서 가져오기로 pfx 파일 사용하고, myCA.crt 인증서를 등록한다.
마찬가지로 클라이언트도 myCA.crt 파일 실행해서 인증서 등록하면 상호간에 연결이 된다.
CA.conf 파일 내용
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_ca
prompt = no
[req_distinguished_name]
C = KR
ST = 사는곳 입력
L = 사는곳 입력
O = 소속회사 이름
OU = 소속부서 이름
CN = 임의의 이름
[ v3_ca ]
basicConstraints = critical, CA:TRUE
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always, issuer:always
keyUsage = critical, cRLSign, digitalSignature, keyCertSign
subjectAltName = @alt_names
[alt_names]
DNS.1 = 임의의 이름
DNS.2 = www.임의의 이름
개인이작성한Config파일.conf
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
C = KR
ST = 사는곳 입력
L = 사는곳 입력
O = 소속회사 이름
OU = 소속회사 이름
CN = 서버 IP
[ v3_req ]
extendedKeyUsage = serverAuth
authorityKeyIdentifier=keyid,issuer
basicConstraints=critical, CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = 서버 IP
DNS.2 = www.서버 IP
IP.1 = 서버 IP
개인이작성한Ext파일.ext
authorityKeyIdentifier=keyid,issuer
basicConstraints=critical,CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = 서버 IP
DNS.2 = www.서버 IP
IP.1 = 서버 IP
배운 것 요약
- 공인 IP 와 사설 IP의 차이점
- 암호화 방식
- 공개키, 대칭키 개념
- HTTPS 인증 과정
- OpenSSL 사용방법
배운 내용
- HTTPS란?
- 개념: HTTP와 거의 동일하지만, 데이터를 주고 받는 과정에 '보안' 요소가 추가된 통신 체계
- 추가설명:
- HTTPS를 사용하면 서버와 클라이언트 사이의 모든 통신 내용이 암호화되어 신뢰성을 보장함.
- HTTPS는 SSL 또는 TLS 을 통해 데이터를 암호화함
- SSL이란?
- 개념: 두 서버 사이에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술
- 적용방법: SSL 인증서 발급 후 서버에 적용
- 공인 SSL 인증서 또는 사설 SSL 인증서 배포
- 사설 SSL 인증서에는 여러 종류가 있지만 OpenSSL을 사용하였음
- 공인 SSL 인증서 또는 사설 SSL 인증서 배포
- 인증 과정
소감
- HTTPS 를 적용하면서 기본적인 암호화 방법에 대해서 많이 배울 수 있었다.
IP에 직접 HTTPS가 입혀질 때는 전율이 돋았다.
출처
- https://dev100.tistory.com/20
- https://stackoverflow.com/questions/38125490/securing-a-private-ip-address-https-certificate
- https://velog.io/@hidaehyunlee/%EA%B3%B5%EC%9D%B8Public-%EC%82%AC%EC%84%A4Private-IP%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90
- https://medium.com/@antelle/how-to-generate-a-self-signed-ssl-certificate-for-an-ip-address-f0dd8dddf754
- https://medium.com/junior-dev/how-to-secure-a-private-ip-address-with-https-nginx-ubuntu-ef8374dbfa4e
- https://oboki.net/workspace/system/linux/how-to-use-trusted-self-signed-certificate-for-local-secure-env/
- https://stackoverflow.com/questions/54630321/secure-https-with-nginx-for-private-ip-address
- https://stackoverflow.com/questions/7580508/getting-chrome-to-accept-self-signed-localhost-certificat
- https://stackoverflow.com/questions/10175812/how-to-generate-a-self-signed-ssl-certificate-using-openssl/43860138#43860138
- https://stackoverflow.com/questions/53881437/invalid-ca-certificate-with-self-signed-certificate-chain
- https://nomoneynohappy.tistory.com/entry/Chrome-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EA%B0%95%EC%A0%9C%EB%A1%9C-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0%EA%B0%84%EB%8B%A8#google\_vignette
- https://blog.naver.com/PostView.nhn?blogId=baekmg1988&logNo=221454486746
- https://stackoverflow.com/questions/19199293/create-a-pfx-file-from-a-cer-and-a-pem-file
- https://rachel-kwak.github.io/2021/03/08/HTTPS.html
'Computer Science > Network' 카테고리의 다른 글
iE 4 에 인증서 적용하기 (0) | 2023.12.13 |
---|---|
DNS, GateWay, Subnet mask (0) | 2019.06.12 |
Socket 개념 (0) | 2018.07.25 |
댓글