OpenSSL 0.9.8에서 만든 키를 OpenSSL 1.1.1에서도 사용하는 방법

  • @SECLEVEL=0 필요.

  • nginx



    /etc/nginx/conf.d/default.conf
      server {
          listen       80;
          listen       443 ssl;
          server_name  localhost;
    
          #ssl_verify_client      on;
          ssl_certificate        /etc/nginx/certs/server.crt;
          ssl_certificate_key    /etc/nginx/certs/server.key;
          ssl_client_certificate /etc/nginx/certs/ca.crt;
    +     ssl_ciphers    'HIGH:!aNULL:!MD5@SECLEVEL=0';
          # IE11だとなぜかTLSv1.2を有効にしていると接続できない。
    +     ssl_protocols  TLSv1 TLSv1.1 TLSv1.3;
    
          location / {
              root   /usr/share/nginx/html;
              index  index.html index.htm;
          }
    
          error_page   500 502 503 504  /50x.html;
          location = /50x.html {
              root   /usr/share/nginx/html;
          }
    
      }
    

    Ubuntu 20.04 (OepnSSL 1.1.1)


  • SSLCipherSuite에서 @SECLEVEL=0 지정을 추가합니다.

  • /etc/apache2/sites-available/default-ssl.conf
     <IfModule mod_ssl.c>
             <VirtualHost _default_:443>
                     ServerAdmin webmaster@localhost
    
                     DocumentRoot /var/www/html
    
                     ErrorLog ${APACHE_LOG_DIR}/error.log
                     CustomLog ${APACHE_LOG_DIR}/access.log combined
    
                     SSLEngine on
    
                     SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    -                SSLCipherSuite HIGH:MEDIUM:!MD5:!RC4:!3DES
    +                SSLCipherSuite @SECLEVEL=0:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:!DES:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
                     # もしくは 
    +                SSLCipherSuite @SECLEVEL=0:HIGH:MEDIUM:!MD5:!RC4:!3DES
                     <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                     SSLOptions +StdEnvVars
                     </FilesMatch>
                     <Directory /usr/lib/cgi-bin>
                                     SSLOptions +StdEnvVars
                     </Directory>
    
             </VirtualHost>
     </IfModule>
    

    Ubuntu 16.04 (OepnSSL 1.0.2e)


  • OpenSSL 1.1.1로 되어 있었다 @SECLEVEL=0: 의 지정은 할 수 없기 때문에 주의.
  • CentOS7도 OpenSSL 1.0.2의 모습.
  • OpenSSL 1.0.2까지는 XP의 IE6에서 액세스가 가능. (※ LOW 지정이 1.1.0에서 삭제되었습니다. 40비트 및 56비트 암호 지원을 libssl에서 제거 )
  • 브라우저 당 사용 가능한 암호화 비트는 List of browsers that support 128-bit and 256-bit encryption

  • 내가 사랑한 openssl (SSL/TLS 편) - 해봐은 상당히 묶여 감사합니다

  • /etc/apache2/sites-available/default-ssl.conf
     <IfModule mod_ssl.c>
             <VirtualHost _default_:443>
                     ServerAdmin webmaster@localhost
    
                     DocumentRoot /var/www/html
    
                     ErrorLog ${APACHE_LOG_DIR}/error.log
                     CustomLog ${APACHE_LOG_DIR}/access.log combined
    
                     SSLEngine on
    
                     SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
                     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    +                SSLCipherSuite kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:!DES:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
    
                     <FilesMatch "\.(cgi|shtml|phtml|php)$">
                                     SSLOptions +StdEnvVars
                     </FilesMatch>
                     <Directory /usr/lib/cgi-bin>
                                     SSLOptions +StdEnvVars
                     </Directory>
    
             </VirtualHost>
     </IfModule>
    

    CentOS 8


  • mod_ssl의 SECLEVEL을 내리면 움직인다.
  • / cs / man 1.1.1 / man 3 / sL_CTX_se t_sekuri ty_ ゔ ぇ l. HTML

  • 레벨 0
    Everything is permitted. This retains compatibility with previous versions of OpenSSL.

    Apache를 https로 활성화하려고 시도해도 시작할 수없는 경우./var/log/httpd/ssl_error_log 확인.

    key too small에 대처하기



    SSL Library Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small

    라고 나왔을 경우, SSLCertificateKeyFile 등을 구 서버로부터 카피해 움직인 경우라고 생각합니다.

    apache의 정의는 다음과 같습니다 /etc/httpd/conf.d/ssl.conf
    /etc/httpd/conf.d/ssl.conf
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
    

    오류 메시지 확인


    # 起動
    /usr/sbin/httpd -D FOREGROUND
    
    # ログ確認
    tail -f /var/log/httpd/ssl_error_log
    

    SSL Library Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small

    CentOS 8 (7?)부터이 오류가 발생합니다.
  • SSL Key to Small?? · Issue #126 · debauchee/barrier

  • 조치 (SECLEVEL 낮추기)



    데비안의 경우,

    /etc/ssl/openssl.cnf
    - CipherString = DEFAULT@SECLEVEL=2
    + CipherString = DEFAULT@SECLEVEL=1
    

    Ubuntu21.04의 경우 Ubuntu 20.04 - how to set lower SSL security level? - Ask Ubuntu

    openssl version -a에서 빌드 시 옵션을 알 수 있다. md5는 openssl 1.1.1에 포함되어 있지 않습니다.

    /etc/ssl/openssl.cnf
    # ファイルの先頭に記述
    openssl_conf = openssl_init
    
    (略)
    
    # ファイルの最後に記述
    [openssl_init]
    ssl_conf = ssl_sect
    
    [ssl_sect]
    system_default = system_default_sect
    
    [system_default_sect]
    CipherString = DEFAULT@SECLEVEL=0
    

    CentOS 8의 경우,
  • crypto policy - 토미조 노트

  • /etc/crypto-policies/config
    - DEFAULT
    + LEGACY
    

    설정 반영
    update-crypto-policies
    
  • /etc/crypto-policies/back-ends/*.config가 일제히 수정되었습니다.

  • 또는 Strong crypto defaults in RHEL 8 and deprecation of weak crypto algorithms - Red Hat Customer Portal
    update-crypto-policies --set LEGACY

    ca md too weak에 대처



    SSL Library Error: error:140AB18E:SSL routines:SSL_CTX_use_certificate:ca md too weak

    이 경우 SECLEVEL을 더 낮 춥니 다.

    /etc/crypto-policies/back-ends/openssl.config
    - @SECLEVEL=1:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:!DES:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
    + @SECLEVEL=0:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:!DES:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
    
  • update-crypto-policies를 실시해도 /etc/crypto-policies/back-ends/openssl.config의 내용은 변하지 않았다.
  • update-crypto-policies --set LEGACY의 경우 다시 씁니다.


  • IPA


  • htps //w w. 가득. . jp/fs/000045966. pdf



  • nginx 로그에 추가



    /etc/nginx/nginx.conf
      http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
    +                     '$ssl_client_verify '
    +                     '$ssl_cipher '
    +                     '$ssl_protocol '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
      }
    
  • $ssl_client_verify
  • SUCCESS 또는 NONE

  • $ssl_cipher
  • ECDHE-RSA-AES128-GCM-SHA256

  • $ssl_protocol
  • TLSv1.2

  • 좋은 웹페이지 즐겨찾기