일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- git
- appres
- fido
- 앱리소스
- otpkey
- Xcode
- openssl
- 애플
- apple
- WebAuthn
- OTP
- MSYS2
- MFA
- 인증
- SwiftUI
- kmip
- 2FA
- MYSQL
- 앱스토어
- SSL
- Android
- SSH
- 안드로이드
- OSX
- Nodejs
- SWIFT
- FIDO2
- albumbook
- 앨범북
- css
Archives
- Today
- Total
인디노트
apache httpd 에 SSL/HTTPS 적용 및 VirtualHost 에 SNI(Server Name Indication) 문제 해결 본문
개발 플랫폼 및 언어
apache httpd 에 SSL/HTTPS 적용 및 VirtualHost 에 SNI(Server Name Indication) 문제 해결
인디개발자 2018. 3. 7. 14:39
사전 작업
- 먼저 SSL 인증서를 발급 받아야 한다. Self Signed CA 를 구성하려면 OpenSSL 로 ROOT CA 생성 및 SSL 인증서 발급 를 참고하여 SSL 인증서를 생성한다.
apache web server 용 SSL 모듈인 mod_ssl 을 설치한다.
아파치 웹서버 에 SSL 적용
갖고 있는 SSL 인증서와 개인키는 /etc/pki/tls/certs/lesstif.com.crt, /etc/pki/tls/private/lesstif.com.key 라고 가정한다.
vi /etc/httpd/conf.d/ssl.conf
- NameVirtualHost 를 추가한다.
NameVirtualHost *:443 SSL 을 적용할 VirtualHost 를 설정한다.
- service httpd restart
- Web browser에서 https 로 연결해서 제대로 보이는지 확인한다.
SELinux 주의 사항
분명히 파일이 있는데 httpd 가 인증서나 개인키를 못 찾을 경우 SELinux context 문제이다. restorecon 명령어로 context 를 복구해준다.
Browser 에 신뢰하는 인증서 추가
Chrome
- 연결 -> 인증정보 클릭
- 향후 추가
VirtualHost 관련 issue
문제
여러 도메인의 사이트를 VirtualHost 기능을 이용하여 SSL 로 제공할 경우 다음과 같은 문제가 있다.
VirtualHost 는 Web Browser가 WebServer에서 HTTP 요청시 다음과 같이 Host Header를 전송
- Web Server는 Host 에 있는 요청을 보고 VirtualHost 에 설정된 resource 를 Browser 에 전송
- Browser가 Host Header 를 보내기전에 SSL handshaking이 이루어 지고 서버 인증서가 오므로 Browser 에서 SSL 인증서 검증시 인증서와 HostName 이 다르다는 에러가 발생
해결책
- SNI(Server Name Indication - RFC 4366) 을 지원하는 Web Server(apache 의 경우 2.2.12) 와 Web Browser(IE7+, FF2+ 등)를 사용해야 한다.
- Windows 의 경우 IE7 이상이고 Vista 이상이어야 (두 개가 and 조건이다. XP 에 IE7은 SNI 를 지원하지 않는다) SNI 지원된다.
- Java는 7 이상부터 지원한다. ((http://docs.oracle.com/javase/7/docs/technotes/guides/security/enhancements-7.html)
- 기타 미지원하는 환경은 wikipedia 의 SNI 항목을 참고(http://en.wikipedia.org/wiki/Server_Name_Indication#No_support)
- Web Server에 Multiple IP 를 할당하고 IP-based Virtual Hosts 를 설정한다.
반응형
'개발 플랫폼 및 언어' 카테고리의 다른 글
Linux NFS 파일 공유 (0) | 2018.03.10 |
---|---|
httpd Permission denied make_sock could not bind to address 0.0.0.0:9443 (0) | 2018.03.07 |
OpenSSL 로 ROOT CA 생성 및 SSL 인증서 발급 (0) | 2018.03.07 |
리눅스 하드디스크 용량 늘리기 (0) | 2018.03.06 |
Samba(3.6.23) 서버 설정 for RHEL 6.5 (0) | 2018.03.06 |
Comments