TLS 버전 확인 방법을 알아본다! 

 

우선 나의 TLS 버전 확인 하는 방법!

1. SSL 인증서가 있는 서버에 접속한다. 

2. 아래 명령어를 실행해본다. 

포트번호는 대부분 443 이겠지만, 다른 포트번호로 설정해서 사용중이라면 사용중인 포트로 적어준다.

명령어를 입력하면 주르륵 확인된 내용들이 출력될것이다. 

openssl s_client -connect 서버아이피:포트번호

예1) openssl s_client -connect 192.168.0.0:443

예2) openssl s_client -connect 192.168.0.0:9443

 

3.  출력된 내용을 스크롤로 내려보면 아래 이미지와 같은 부분을 볼수있다. 

이 빨간 네모 안에 있는게 지금 적용되어있는 버전이다. 

 

내가 원하는 버전을 지원하는지 확인하는 방법!! 

위에서 입력했던 명령어에 옵션만 추가해주면 된다~!! 

# 1.2 버전 지원이 가능한지 확인하기 
openssl s_client -connect 192.168.0.0:9443 -tls1_2

# 1.1 버전 지원이 가능한지 확인하기 
openssl s_client -connect 192.168.0.0:9443 -tls1_1

 

 

간단하게 웹에서도 확인할 수 있는 사이트 2곳 소개~ 

이곳은 커스텀된 포트번호도 조회 가능하다 (예 7443 등등 ) 

 

TLS Checker - Instant Results

Does your server or CDN support the latest TLS 1.3? Check your SSL/TLS setup now!

www.cdn77.com

 

"www.ssllabs.com/"사이트는 일반적인 포트만 조회 가능한것 같다~ 80, 443 

 

 

Qualys SSL Labs

Books Bulletproof SSL and TLS is a complete guide to deploying secure servers and web applications. This book, which provides comprehensive coverage of the ever-changing field of SSL/TLS and Web PKI, is intended for IT security professionals, system admini

www.ssllabs.com

 

 

끝! 

 

나의 작업환경 

Apache/2.4.46 (Unix) 
CentOS Linux release 7.4.1708 (Core) 

 

 

1. ssl key ftp를 통해서 서버에 저장한다.

디렉토리 생성 명령 : mkdir 디렉토리명
나의 경로 : /usr/local/ssl_key/

 

2. httpd.conf 파일의 주석 해제 

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
Include conf/extra/httpd-ssl.conf

 

3. httpd-ssl.conf 수정

# 주석해제 ( 이건 안해도 된다.)
SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin


# 포트설정 
# 기본 Listen 443
Listen 9443 --나는 9443으로 받을 예정 

# virtualHost 설정 

<VirtualHost *:9443>
  ServerName www.myservice.com
  ServerAlias myservice.com
  SSLEngine on
  SSLCertificateFile /usr/local/ssl_key/myservice.com.crt
  SSLCertificateKeyFile /usr/local/ssl_key/myservice.com.key
  SSLCACertificateFile /usr/local/ssl_key/chainca.crt
  DocumentRoot /home/mytest/test
 #   <Directory /home/mytest/test>
 #              Order allow,deny
 #               Allow from all
 #              Options FollowSymLinks
 #               #Options Indexes
 #               AllowOverride All
 #               Require all granted
 #  </Directory>
</VirtualHost>

 

 

4. Apache 환경 설정 테스트

apachectl configtest 

 

"Syntax OK" 가 나오면 아파치를 실행 해준다. 

 

5. Apache 실행 

apachectl start

 

 

브라우저를 열고 접속해보기

https://192.168.11.22:9443  -- 192.168.11.22는 본인 아이피 넣으면 된다. 

 

안된다면?

1. httpd 가 실행 되고있는지 확인 netstat -ntlp

2. 방화벽 확인하기

참고 : genie-dev.tistory.com/60

 

방화벽은 열렸는데 Apache Connection 안되는 경우

* 리눅스 상단에 별도의 방화벽이 있다면 리눅스 자체의 방화벽 기능을 꼭 사용하지 않아도 된다. 나는 상단에 별도의 방화벽이 설정되어 있고 해당 방화벽은 오픈되어 있는 상태이다. 웹서버를

genie-dev.tistory.com

 

 

Apache 설치했다면 설정을 시작해보자.

 

 

설정파일 편집기 실행 후 

vi httpd.conf 

아래와 같이 내용 수정 

Listen 80 -- 사용할 포트 

ServerName localhost 

// vhost를 사용할 경우 주석 해제  
Include conf/extra/httpd-vhosts.conf

// ssl을 사용할 경우 주석 해제
Include conf/extra/httpd-ssl.conf

 

설정에 문제 없는지 확인해보기 

apachectl configtest

 

vhost를 사용하는 경우 이렇게 나올거다. 

// AH00112: Warning: DocumentRoot [/usr/local/apache/docs/dummy-host.example.com] does not exist

 

그럼 httpd-vhost.conf 파일을 열어서  DocumentRoot를 내게 맞게 설정한다. (html 파일이 있는곳으로 설정)

 

ssl을 사용하는 경우는 이렇게 나올거다. 

AH00526: Syntax error on line 144 of /usr/local/apache/conf/extra/httpd-ssl.conf:
SSLCertificateFile: file '/usr/local/apache/conf/server.crt' does not exist or is empty

-- 이건 SSL설정 포스팅을 참고하기!  (genie-dev.tistory.com/47

 

Apache) SSL 설정 샘플 + redircet

Centos7 Springboot 프로젝트를 띄우는 기준으로 설명합니다. 참고하세요~! apache 위치로 이동한 후 httpd.conf 파일을 열어 아래 모듈의 주석을 풀어준다. vi httpd.conf LoadModule alias_module modules/mod_a..

genie-dev.tistory.com

 

오류 사항을 수정 했다면 다시 설정 검사를 해본다. 

apachectl configtest 

 

"Syntax OK" 가 나온다면 성공! 

 

아파치를 실행해준다. 

apachectl start 

 

80 포트가 정상적으로 Listen 하고 있는지 확인한다.

netstat -ntlp 

 

정상적으로 Listen 되고 있다면 브라우저 실행 후 나의 아이피로 접속해본다. 


이게 안된다면 방화벽을 확인해야하는데 

리눅스 상단에 방화벽이 있다면 해당 방화벽을 확인하고 

없다면 iptables 를 확인해준다 .

 

참고 genie-dev.tistory.com/60

 

방화벽은 열렸는데 Apache Connection 안되는 경우

* 리눅스 상단에 별도의 방화벽이 있다면 리눅스 자체의 방화벽 기능을 꼭 사용하지 않아도 된다. 나는 상단에 별도의 방화벽이 설정되어 있고 해당 방화벽은 오픈되어 있는 상태이다. 웹서버를

genie-dev.tistory.com

 

httpd.conf 파일을 열어서 

 

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so 

 

주석이 되어있다면 주석 해제 후 저장해준다 (wq! : 저장 후 닫기 )

 

물론 /usr/local/apache/modules에 해당 모듈이 있어야 합니다.

 

 

다시 설정 검사를 해봅니다. 

apachectl configtest  

 

결과가 성공이면 아래와 같이 나옴.

Syntax OK

 

 

이제 다시 아파치 실행 

apachectl start

Centos7 Springboot 프로젝트를 띄우는 기준으로 설명합니다.  참고하세요~! 

 

 

apache 위치로 이동한 후 

 

httpd.conf 파일을 열어 아래 모듈의 주석을 풀어준다. 

 

vi httpd.conf 

LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule jk_module modules/mod_jk.so

 

vi apache/conf/workers.properties 

worker.list=mysitebalancer


worker.mysitebalancer.type=lb
worker.mysitebalancer.balance_workers=mysite

worker.mysite.type=ajp13
worker.mysite.host=127.0.0.1
worker.mysite.port=8015  ---> spring ajp 포트에 설정해줄 값 
worker.mysite.lbfactor=1

 

* Spring 에서 ajp 포트 설정 예시 

import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Configuration;

@Configuration
public class WebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * org.springframework.boot.web.server.WebServerFactoryCustomizer#customize(org.
	 * springframework.boot.web.server.WebServerFactory)
	 */
	@Override
	public void customize(TomcatServletWebServerFactory factory) {
		Connector connector = new Connector("AJP/1.3");
		connector.setScheme("http");
		connector.setPort(8015);
		connector.setSecure(false);
		connector.setAllowTrace(true);

		factory.addAdditionalTomcatConnectors(connector);
	}
}

 

 

httpd.comf 제일 아래쪽에 아래 코드를 추가해준다. 

<IfModule jk_module>
  JkWorkersFile conf/workers.properties

  JkShmFile run/mod_jk.shm
  JkLogFile "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/mod_jk.log-%Y-%m-%d 86400 +540"
  JkLogLevel error
  JkLogStampFormat "[%a %b %d %H:%M:%S %Y]
  </IfModule>
  <IfModule unixd_module>

  User daemon
  Group daemon

</IfModule>

 

vi apache/conf/extra/httpd-vhost.conf 

-- ssl 인증서 없이 사용할 경우 
<VirtualHost *:80>
  ServerName mysite.co.kr
  ServerAlias www.mysice.co.kr
  DocumentRoot /home/test/htdocs
  <Directory /home/test/htdocs>
                Order allow,deny
                Allow from all
                Options FollowSymLinks
                AllowOverride All
                Require all granted
    </Directory>
  
   JkMount /* mysitebalancer  -->  사용하지 않는 경우 삭제해도 됨.
</VirtualHost>


-- ssl 인증서 사용할 경우 http -> https로 리다이렉트 
<VirtualHost *:80>
  ServerName mysite.co.kr
  ServerAlias www.mysice.co.kr
  DocumentRoot /home/test/htdocs
  <Directory /home/test/htdocs>
                Order allow,deny
                Allow from all
                Options FollowSymLinks
                AllowOverride All
                Require all granted
    </Directory>
   RewriteEngine On
   RewriteCond %{HTTPS} off

   RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
  # JkMount /* mysitebalancer
</VirtualHost>

 

 

vi apache/conf/extra/httpd-ssl.conf 

<VirtualHost *:443>
  ServerName mysite.co.kr
  ServerAlias www.mysice.co.kr
  SSLEngine on
  SSLCertificateFile conf/cert/mysite/mysite.co.kr.crt
  SSLCertificateKeyFile conf/cert/mysite/mysite.co.kr.key
  SSLCACertificateFile conf/cert/mysite/chainca.crt
  DocumentRoot /home/test/htdocs
    <Directory /home/test/htdocs>
                Order allow,deny
                Allow from all
                Options FollowSymLinks
                #Options Indexes
                AllowOverride All
                Require all granted
    </Directory>

    JkMount /* mysitebalancer
</VirtualHost>

 

apachectl configtest  명령어로 설정에 문제가 없는지 확인해본다. 

"Syntax OK " 가 나온다면 

 

아파치 재실행 후 확인해보면 된다. httpd - k restart

 

+ Recent posts