이번에는 워드프레스 홈페이지를 HTTPS통신을 하게 만들어봅시다.
https://www.lesstif.com/pages/viewpage.action?pageId=6979614 이 홈페이지글을 기반으로 썼습니다.
일단 openssl을 사용해서 rootca 인증서를 생성해보자,.
openssl genrsa -aes256 -out /etc/pki/tls/private/hasi-rootca.key 2048
뒷부분 hasi-rootca.key는 파일명이므로 임의로 설정해도 됩니다,
자신의 키값을 설정해줍시다.
그다음. 키는 그룹이나 다른 사용자가 읽고 쓰고 접근을 방지하기 위해 접근권한을 바꿔즙니다.
chmod 600 /etc/pki/tls/private/hasi-rootca.key
ls -la로 확인해보면 권한이 바뀐것을 볼 수 있습니다.
그다음 cd /etc/pki/tls/private를 하고 vi rootca_opssl.conf로 새로 문서를 만들어줍니다.
[ req ] default_bits = 2048 default_md = sha1 default_keyfile = hasi-rootca.key distinguished_name = req_distinguished_name extensions = v3_ca req_extensions = v3_ca
[ v3_ca ] basicConstraints = critical, CA:TRUE, pathlen:0 subjectKeyIdentifier = hash ##authorityKeyIdentifier = keyid:always, issuer:always keyUsage = keyCertSign, cRLSign nsCertType = sslCA, emailCA, objCA [req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = KR countryName_min = 2 countryName_max = 2
# 회사명 입력 organizationName = Organization Name (eg, company) organizationName_default = hasi Inc.
# 부서 입력 #organizationalUnitName = Organizational Unit Name (eg, section) #organizationalUnitName_default = Condor Project
# SSL 서비스할 domain 명 입력 commonName = Common Name (eg, your name or your server's hostname) commonName_default = hasi's Self Signed CA commonName_max = 64 |
파일 내에 다음과 작성하고 저장하고 나옵니다.
그다음은 인증서를 이제 만듭니다.
openssl req -new -key /etc/pki/tls/private/hasi-rootca.key -out /etc/pki/tls/certs/hasi-rootca.csr -config rootca_openssl.conf
입력하시면 위에 설정에서 입력한 국가와 회사 설정이 되있는 상태로 나오는데 엔터를 눌러줍니다.
그리고 다음과 같이 입력합니다.
openssl x509 -req \
-days 3650 \
-extensions v3_ca \
-set_serial 1 \
-in /etc/pki/tls/certs/hasi-rootca.csr \
-signkey /etc/pki/tls/private/hasi-rootca.key \
-out /etc/pki/tls/certs/hasi-rootca.crt \
-extfile rootca_openssl.conf
뒤에 \는 명령어가 길때 다음줄로 내리는거 아시죠?
생성된 인증서가 잘 되었는지 확인해봅시다.
openssl x509 -text -in /etc/pki/tls/certs/hasi-rootca.crt
다음은 SSL인증서를 만듭니다. 과정은 위와 유사합니다.
openssl genrsa -aes256 -out /etc/pki/tls/private/gachon.com.key 2048
워드프레스의 도메인인 gachon.com으로 저는 만들었습니다.
다음은 Passphrase 를 제거하기 위해서 다음과 같이입력합니다.
cp /etc/pki/tls/private/lesstif.com.key /etc/pki/tls/private/gachon.com.key.enc
openssl rsa -in /etc/pki/tls/private/lesstif.com.key.enc -out /etc/pki/tls/private/gachon.com.key
우리가 사용하는 개인용 인증서 같은 경우에는 보호가 되어야 하지만 SSL에서 사용할때는 http서비스가 시작할때마다 헤제해야하는 번거로움이 있어서 아예 제거합시다.
다음은 host_openssl.conf 파일을 만들어줍니다. 역시 vi host_openssl.conf입력합니다.
[ req ] default_bits = 2048 default_md = sha1 default_keyfile = hasi-rootca.key distinguished_name = req_distinguished_name extensions = v3_user ## 인증서 요청시에도 extension 이 들어가면 authorityKeyIdentifier 를 찾지 못해 에러가 나므로 막아둔다. ## req_extensions = v3_user
[ v3_user ] # Extensions to add to a certificate request basicConstraints = CA:FALSE authorityKeyIdentifier = keyid,issuer subjectKeyIdentifier = hash keyUsage = nonRepudiation, digitalSignature, keyEncipherment ## SSL 용 확장키 필드 extendedKeyUsage = serverAuth,clientAuth subjectAltName = @alt_names [ alt_names] ## Subject AltName의 DNSName field에 SSL Host 의 도메인 이름을 적어준다. DNS.1 = www.gachon.com DNS.2 = gachon.com DNS.3 = *.gachon.com
[req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = KR countryName_min = 2 countryName_max = 2
# 회사명 입력 organizationName = Organization Name (eg, company) organizationName_default = gachon Inc.
# 부서 입력 organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = gachon SSL Project
# SSL 서비스할 domain 명 입력 commonName = Common Name (eg, your name or your server's hostname) commonName_default = gachon.com commonName_max = 64 |
위와 같이 입력하고 저장하고 나옵니다.
다음 SSL 인증서를 요청합시다.
openssl req -new -key /etc/pki/tls/private/gachon.com.key -out /etc/pki/tls/certs/gachon.com.csr -config host_openssl.conf
입력합니다
그리고 5년짜리 SSL 인증서를 발급합시다.
openssl x509 -req -days 1825 -extensions v3_user -in /etc/pki/tls/certs/gachon.com.csr \
-CA /etc/pki/tls/certs/hasi-rootca.crt -CAcreateserial \
-CAkey /etc/pki/tls/private/hasi-rootca.key \
-out /etc/pki/tls/certs/gachon.com.crt -extfile host_openssl.conf
인증서가 잘 생성되었는지 확인 해봅시다.
openssl x509 -text -in /etc/pki/tls/certs/gachon.com.crt
이제 사이트에 적용해봅시다.
일단 mod_ssl을 다운받아주세요
yum -y install mod_ssl
다음은 ssl환경설정인 ssl.conf를 수정합니다
vi /etc/httpd/conf.d/ssl.conf
SSLCertificateFile에 gachon.com의 인증서를넣어줍니다
SSLCertificateFile /etc/pki/tls/cert/gachon.com.key
다음 Server Private Key에서 SSLCertificateKeyFile 에 도메인 키를 넣어줍시다
SSLCertificateKeyFile /etc/pki/tls/private/gachon.com.key
그리고 맨 밑에 다음과 같이
<VirtualHost *:443> ServerName gachon.com ServerAlias www.gachon.com SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW ## 위에서 생성한 SSL 인증서와 개인키 SSLCertificateFile /etc/pki/tls/certs/gachon.com.crt SSLCertificateKeyFile /etc/pki/tls/private/gachon.com.key SSLCACertificateFile /etc/pki/tls/certs/hasi-root.crt ## <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/html/wordpress"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown ErrorLog logs/example.com-ssl_error_log TransferLog logs/example.com-ssl_access_log LogLevel warn CustomLog logs/example.com-ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> |
다음과 같이 설정하고 httpd를 재시작해줍니다
systemctl restart httpd
그러면 다음과 같이 https로 접속한 모습을 볼 수 있습니다.
'가상머신 환경 세팅' 카테고리의 다른 글
크로스 사이트 스크립팅 공격 (0) | 2017.12.06 |
---|---|
mysql group replication (1) | 2017.10.10 |
워드프레스 가상호스트 설정하기 (0) | 2017.09.29 |
아파치 설치부터 워드프레스까지 (0) | 2017.09.27 |
가상머신 위에 가상머신 돌리기. (0) | 2017.09.18 |