프로젝트 수행중인 운영서버에 G-SSL 인증서가 만료되어 갱신작업을 진행하다가, 몇년전에 최초 구축시 정리해논 파일을찾아 포스팅하게되었습니다.
개발하면서 G-SSL구축은 2번해보고 갱신은 처음이라 두근두근합니다.
첫 G-SSL은 Oracle의 WebLogic에 oracle 11g 디비여서 사원때이기도하고, 구글링해도 정보는 없고, 인증서도 두세번 신청해서 한달넘게 걸려 구축한기억때문에 두번째 구축인 Apache서버에도 걱정을 하고 시작했는데 아파치서버 G-SSL은 구글링해도 정보가 많이나오고 해서 인증서 두번신청만에 구축했던것 같습니다. 두번이나 신청했던이유는 행정전자서명 인증관리센터(gpki.go.kr)에서 발급시 서버에서 생성한 CSR정보를 입력해줘야하는데 이정보를 서버에서 생성한 값을 입입력하지 않고 발급해 두번에 시도끝에 구축에 성공했습니다. 오라클 웹로직의 경우에는 오라클 월렛을 이용해 csr 및 키생성을 해야되는데 이부분이 행정전자서명에서 제공하는 매뉴얼도 부실하고, 행정전자서명 운영사업단에서 제공하는 답변으로도 키생성이 안되고 구글링을 통해서 수행했던것 같습니다.
이것도 정리해서 어딘가 저장해뒀는데 파일을 못찾겠어요...
아파치서버에 G-SSL 인증서를 갱신(구축도 동일)하기 위한 절차를 정리해 포스팅합니다.
Mod_ssl, OpenSSL모두 설치되어있는 환경 설치가 안되어있다면 설치가 필요합니다.
1. CSR 개인키 생성
openssl genrsa -des3 -out key.pem 2048 입력시 key.pem 파일이 생성됩니다. 생성후 패스워드를 입력하세요.
openssl genrsa -des3 -out key.pem 2048
Generating RSA private key, 2048 bit long modulus
.................................................................................+++
e is 65537 (0x10001)
Enter pass phrase for key.pem:
Verifying - Enter pass phrase for key.pem:
2. 생성된 게인키를 이용하여 CSR 생성
openssl req -new -key key.pem -out csr.pem
Enter pass phrase for key.pem: //key.pem 생성시 입력한 패스워드 입력
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----DN에 들어갈 정보 입력
//가입자가 속한 국가명을 나타내기위한 속성이며 속성값은 ISO3166표준을 준용해 반드시 두글자로 표현
Country Name (2 letter code) [XX]:KR //국가(C)
//가입자가 속한 도시명이나 도명을 나타내기위한 속성이며 속성값은 시도영문명
State or Province Name (full name) []://시도(S)
//가입자가 속한 지역명을 나타내기위한 속성 속성값은 시군구영문명
Locality Name (eg, city) [Default City]://시군구(L)
//가입자가 속한 조직명을 나타내기위한 속성 속성값은 기관명, 업체명
Organization Name (eg, company) [Default Company Ltd]://기관명,업체명(O)
//가입자가 속한 하위 조직명을 나타내기위한 속성, 속성값은 조직또는 부서명
Organizational Unit Name (eg, section) []://부서명(OU)
//가입자의 이름을 나타내는 속성, 입력값은 인증서를 설치할 사이트의 도메인명 입력
Common Name (eg, your name or your server's hostname) []://인증서 설치할 도메인명 입력(CN)
A challenge password []: //개인키의 패스워드 입력
An optional company name []:한번더입력⏎
3. SSL인증서 신청을 위한 CSR복사
2번 과정에서 생성된 csr.pem파일을 vi편집기로 열어
-----BEGIN CERTIFICATE REQUEST----- 부터
-----END CERTIFICATE REQUEST----- 까지 복사하여 저장합니다.
4. G-SSL 인증서 발급
4.1 행정전자서명 인증관리센터 홈페이지에 접속하여 발급시 3번에서 저장한 CSR값을 입력합니다. 이번사업은 갱신으로 주무관님께서 공문처리후 인증서를 발급받아주셨습니다.
4.2 인증서 발급 후 인증서파일인 도메인.p7b 파일을 다운받아 서버에 저장합니다.
4.3 pkcs#7을 pem 파일로 변환합니다.
openssl pkcs7 -in domain.p7b -out cert.pem -print_certs -text
4.4 CA 인증서 및 CaChain 인증서 생성 : cert.pem 파일을 편집기로 열어 내용을 복사하여 각각의 파일을 생성합니다.
- caChain.pem 생성 > cert.pem 파일의 두번째 ‘Certificate:’부터 맨 끝에 있는 ‘-----END CERTIFICATE-----’까지 부 분을 전부 복사하여 caChain.pem 파일로 저장합니다.
- ca.pem 생성 > cert.pem 파일의 세번째 ‘Certificate:’부터 맨 끝에 있는 ‘-----END CERTIFICATE-----’까지 부 분을 전부 복사하여 ca.pem 파일로 저장합니다.
5. 파일저장 및 수정(Apache 환경설정파일(httpd.conf 또는 ssl.conf)를 수정합니다.
갱신의 경우 지금까지 생성했던 <key.pem>, <csr.pem>, <cert.pem>, <caChain.pem>, <ca.pem>을 기존경로에 반영
신규구축인 경우에는 환경설정시 키파일 경로지정 후 위치에 파일 업로드
##
## SSL Virtual Host Context
##
<VirtualHost *:443>
CustomLog logs/request_log
#홈디렉토리 설정
DocumentRoot "/home/WebApp/www"
#도메인 설정
ServerName domain:443
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
#cert.pem
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. A new
# certificate can be generated using the genkey(1) command.
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /home/APACHE/jws-3.0/G-SSL/cert.pem
#key.pem
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /home/APACHE/jws-3.0/G-SSL/key.pem
#caChain.pem
# Server Certificate Chain:
# Point SSLCertificateChainFile at a file containing the
# concatenation of PEM encoded CA certificates which form the
# certificate chain for the server certificate. Alternatively
# the referenced file can be the same as SSLCertificateFile
# when the CA certificates are directly appended to the server
# certificate for convinience.
SSLCertificateChainFile /home/APACHE/jws-3.0/G-SSL/caChain.pem
#ca.pem
# Certificate Authority (CA):
# Set the CA certificate verification path where to find CA
# certificates for client authentication or alternatively one
# huge file containing all of them (file must be PEM encoded)
SSLCACertificateFile /home/APACHE/jws-3.0/G-SSL/ca.pem
</VirtualHost>
6. Apache 서버 재구동
./apachectl startssl //시작시 개인키 패스워드 입력
startssl은 ssl을 활성화한 상태에서 httpd 시작명령어
7. 웹브라우저를 통해 SSL인증서가 정상 적용되었는지 확인하면 끝! 확인방법은 입력한 URL 옆에 자물쇠 모양이 나타나고, 자물쇠 클릭시 신뢰할수 있는 사이트라고 나타나면 정상적용된것입니다.!
Apache서버의 경우 G-SSL 인증서구축가이드7.2만 보고도 구축할 수 있어 가이드를 첨부합니다.
'개발 > linux' 카테고리의 다른 글
리눅스 폴더별 용량확인 명령어(du) (0) | 2021.06.28 |
---|---|
리눅스 tar, gz, 압축/분할압축/해제 (0) | 2021.06.22 |
Linux(CentOS)에 GeoServer설치하기 (0) | 2021.05.13 |
댓글