nginx에서 Qualys SSL Server Test 전체 항목 100점(TLSv1.2+TLSv1.3)
소개
TLSv1.2+TLSv1.3에서 전체 항목 100점이 되었으므로 각서
ArchLinux + nginx1.19.9
ssl-labs : htps //w w.ぁbs. 이 m / sl st
참고 : Qualys SSL Server Test에서 A+ 평가 및 만점 얻기 (nginx)
목표
SSL Labs의 모든 항목을 100점으로
TLSv1.2 + TLSv1.3 대응
준비
증명서
Let's Encrypt
DNS 인증
www 있음도 발행
키 길이는 4096bit
sudo certbot certonly --manual \
--preferred-challenges dns \
--rsa-key-size 4096 \
-d example.com \
-d www.example.com \
-m [email protected]
DNS 레코드
DNS CAA
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild ";"
example.com. IN CAA 0 iodef "mailto:[email protected]"
www의 A 레코드 설정도 잊지 않고 (CNAME이라도 좋을까?)
dhparam
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096
nginx.conf
발전기를 사용합시다.
Mozilla SSL Configuration Generator
Mozilla Configuration은 우선 Intermediate에서
이를 바탕으로 설정
왜 Cipher Strength가 100이 되지 않는가?
Mozilla 표준 설정 (Intermediate)
nginx.confECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES128-GCM-SHA256
등의 128bit의 암호가 지정되어 있기 때문에 평가가 내려간다
설정
주로 server 블록 설정
256bit 이상의 암호만 지정해 보았다
참고 기사 에서처럼 nginx에서 TLSv1.3의 암호화 스위트를 설정할 수 없습니다.
TLSv1.2만 사용해보기
openssl.cnf에서 설정?
nginx1.19.4에서 nginx 측에서 설정할 수있게 된 것 같습니다.
TLSv1.3의 암호화 스위트 설정
256bit 이상의 암호만 지정ECDHE-ECDSA-CHACHA20-POLY1305
를 남겨두면 TLSv1.3에 128bit 암호가 남는다ECDHE-RSA-CHACHA20-POLY1305
삭제하면 문제가되지 않습니다.
nginx.confssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
Handshake Simulation이 외롭다면
nginx.confssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
Key Exchange 100
nginx.confssl_ecdh_curve secp521r1:secp384r1;
결과
WEAK로 표시되지만 평가에는 영향을 미치지 않습니다.
nginx.conf# generated 2021-04-13, Mozilla Guideline v5.6, nginx 1.19.9, OpenSSL 1.1.1d, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.19.9&config=intermediate&openssl=1.1.1d&guideline=5.6
# http -> https & www付きにリダイレクト
server {
listen 80 default_server;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
# www付きにリダイレクト
if ($host !~* ^www\.(.+)) {
return 301 https://www.example.com$request_uri;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
ssl_ecdh_curve secp521r1:secp384r1;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 127.0.0.1;
}
Reference
이 문제에 관하여(nginx에서 Qualys SSL Server Test 전체 항목 100점(TLSv1.2+TLSv1.3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/warspitenavy/items/97fa414a6b2e6c6c5516
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SSL Labs의 모든 항목을 100점으로
TLSv1.2 + TLSv1.3 대응
준비
증명서
Let's Encrypt
DNS 인증
www 있음도 발행
키 길이는 4096bit
sudo certbot certonly --manual \
--preferred-challenges dns \
--rsa-key-size 4096 \
-d example.com \
-d www.example.com \
-m [email protected]
DNS 레코드
DNS CAA
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild ";"
example.com. IN CAA 0 iodef "mailto:[email protected]"
www의 A 레코드 설정도 잊지 않고 (CNAME이라도 좋을까?)
dhparam
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096
nginx.conf
발전기를 사용합시다.
Mozilla SSL Configuration Generator
Mozilla Configuration은 우선 Intermediate에서
이를 바탕으로 설정
왜 Cipher Strength가 100이 되지 않는가?
Mozilla 표준 설정 (Intermediate)
nginx.confECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES128-GCM-SHA256
등의 128bit의 암호가 지정되어 있기 때문에 평가가 내려간다
설정
주로 server 블록 설정
256bit 이상의 암호만 지정해 보았다
참고 기사 에서처럼 nginx에서 TLSv1.3의 암호화 스위트를 설정할 수 없습니다.
TLSv1.2만 사용해보기
openssl.cnf에서 설정?
nginx1.19.4에서 nginx 측에서 설정할 수있게 된 것 같습니다.
TLSv1.3의 암호화 스위트 설정
256bit 이상의 암호만 지정ECDHE-ECDSA-CHACHA20-POLY1305
를 남겨두면 TLSv1.3에 128bit 암호가 남는다ECDHE-RSA-CHACHA20-POLY1305
삭제하면 문제가되지 않습니다.
nginx.confssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
Handshake Simulation이 외롭다면
nginx.confssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
Key Exchange 100
nginx.confssl_ecdh_curve secp521r1:secp384r1;
결과
WEAK로 표시되지만 평가에는 영향을 미치지 않습니다.
nginx.conf# generated 2021-04-13, Mozilla Guideline v5.6, nginx 1.19.9, OpenSSL 1.1.1d, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.19.9&config=intermediate&openssl=1.1.1d&guideline=5.6
# http -> https & www付きにリダイレクト
server {
listen 80 default_server;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
# www付きにリダイレクト
if ($host !~* ^www\.(.+)) {
return 301 https://www.example.com$request_uri;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
ssl_ecdh_curve secp521r1:secp384r1;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 127.0.0.1;
}
Reference
이 문제에 관하여(nginx에서 Qualys SSL Server Test 전체 항목 100점(TLSv1.2+TLSv1.3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/warspitenavy/items/97fa414a6b2e6c6c5516
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
sudo certbot certonly --manual \
--preferred-challenges dns \
--rsa-key-size 4096 \
-d example.com \
-d www.example.com \
-m [email protected]
example.com. IN CAA 0 issue "letsencrypt.org"
example.com. IN CAA 0 issuewild ";"
example.com. IN CAA 0 iodef "mailto:[email protected]"
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 4096
발전기를 사용합시다.
Mozilla SSL Configuration Generator
Mozilla Configuration은 우선 Intermediate에서
이를 바탕으로 설정
왜 Cipher Strength가 100이 되지 않는가?
Mozilla 표준 설정 (Intermediate)
nginx.confECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES128-GCM-SHA256
등의 128bit의 암호가 지정되어 있기 때문에 평가가 내려간다
설정
주로 server 블록 설정
256bit 이상의 암호만 지정해 보았다
참고 기사 에서처럼 nginx에서 TLSv1.3의 암호화 스위트를 설정할 수 없습니다.
TLSv1.2만 사용해보기
openssl.cnf에서 설정?
nginx1.19.4에서 nginx 측에서 설정할 수있게 된 것 같습니다.
TLSv1.3의 암호화 스위트 설정
256bit 이상의 암호만 지정ECDHE-ECDSA-CHACHA20-POLY1305
를 남겨두면 TLSv1.3에 128bit 암호가 남는다ECDHE-RSA-CHACHA20-POLY1305
삭제하면 문제가되지 않습니다.
nginx.confssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
Handshake Simulation이 외롭다면
nginx.confssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
Key Exchange 100
nginx.confssl_ecdh_curve secp521r1:secp384r1;
결과
WEAK로 표시되지만 평가에는 영향을 미치지 않습니다.
nginx.conf# generated 2021-04-13, Mozilla Guideline v5.6, nginx 1.19.9, OpenSSL 1.1.1d, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.19.9&config=intermediate&openssl=1.1.1d&guideline=5.6
# http -> https & www付きにリダイレクト
server {
listen 80 default_server;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
# www付きにリダイレクト
if ($host !~* ^www\.(.+)) {
return 301 https://www.example.com$request_uri;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
ssl_ecdh_curve secp521r1:secp384r1;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 127.0.0.1;
}
Reference
이 문제에 관하여(nginx에서 Qualys SSL Server Test 전체 항목 100점(TLSv1.2+TLSv1.3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/warspitenavy/items/97fa414a6b2e6c6c5516
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES128-GCM-SHA256
ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
ssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
ssl_ecdh_curve secp521r1:secp384r1;
# generated 2021-04-13, Mozilla Guideline v5.6, nginx 1.19.9, OpenSSL 1.1.1d, intermediate configuration
# https://ssl-config.mozilla.org/#server=nginx&version=1.19.9&config=intermediate&openssl=1.1.1d&guideline=5.6
# http -> https & www付きにリダイレクト
server {
listen 80 default_server;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
# www付きにリダイレクト
if ($host !~* ^www\.(.+)) {
return 301 https://www.example.com$request_uri;
}
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
ssl_dhparam /etc/nginx/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
# ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384;
ssl_ciphers 'HIGH !aNULL !eNULL !kECDH !DSS !MD5 !EXP !PSK !SRP !CAMELLIA !SEED !RSA !AES128 !ARIA128';
ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;
ssl_ecdh_curve secp521r1:secp384r1;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 127.0.0.1;
}
Reference
이 문제에 관하여(nginx에서 Qualys SSL Server Test 전체 항목 100점(TLSv1.2+TLSv1.3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/warspitenavy/items/97fa414a6b2e6c6c5516텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)