在 Raspbian Apache 服务器上设置 SSL



我有一个域名和SSL从goaddy购买。我成功地将域名指向我的树莓派的IP地址。但是,SSL 存在一些问题。当我从 godaddy 下载 SSL 时,我得到了两个 .crt 文件和一个 .pem 文件。Godaddy的说明只提到了一个.key文件和两个.crt。

在我的 Apache 配置文件中,我按照 godaddy 的格式放入了一个 VirtualHost 标签,并替换了所有适当的信息:

<VirtualHost xxx.xxx.x.x:443>
DocumentRoot /var/www/coolexample
ServerName coolexample.com www.coolexample.com
SSLEngine on
SSLCertificateFile /path/to/coolexample.crt
SSLCertificateKeyFile /path/to/privatekey.key
SSLCertificateChainFile /path/to/intermediate.crt
</VirtualHost>

但是,如您所见,这需要私钥。启动我的 apache 服务器时,错误日志告诉我找不到私钥。我的问题是,在虚拟主机标签中,如何使用 godaddy 提供给我的文件正确设置 SSL?

以下是可以在虚拟主机中使用的TLS 1.2实现:

SSLEngine On 
SSLCertificateFile  /etc/ssl/localcerts/xxxxxxx.crt
SSLCertificateKeyFile /etc/ssl/localcerts/mysite.key
SSLCertificateChainFile /etc/ssl/localcerts/bundle.crt
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"

此外,必须确保启用mod_ssl。 在相应的配置文件中,你可以做这样的事情(主要是股票(

<IfModule mod_ssl.c>
# Pseudo Random Number Generator (PRNG):
# Configure one or more sources to seed the PRNG of the SSL library.
# The seed data should be of good random quality.
# WARNING! On some platforms /dev/random blocks if not enough entropy
# is available. This means you then cannot use the /dev/random device
# because it would lead to very long connection times (as long as
# it requires to make more entropy available). But usually those
# platforms additionally provide a /dev/urandom device which doesn't
# block. So, if available, use this one instead. Read the mod_ssl User
# Manual for more details.
#
SSLRandomSeed startup builtin
SSLRandomSeed startup file:/dev/urandom 512
SSLRandomSeed connect builtin
SSLRandomSeed connect file:/dev/urandom 512
##
##  SSL Global Context
##
##  All SSL configuration in this context applies both to
##  the main server and all SSL-enabled virtual hosts.
##
#
#   Some MIME-types for downloading Certificates and CRLs
#
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl
#   Pass Phrase Dialog:
#   Configure the pass phrase gathering process.
#   The filtering dialog program (`builtin' is a internal
#   terminal dialog) has to provide the pass phrase on stdout.
SSLPassPhraseDialog  exec:/usr/share/apache2/ask-for-passphrase
#   Inter-Process Session Cache:
#   Configure the SSL Session Cache: First the mechanism 
#   to use and second the expiring timeout (in seconds).
#   (The mechanism dbm has known memory leaks and should not be used).
#SSLSessionCache         dbm:${APACHE_RUN_DIR}/ssl_scache
SSLSessionCache     shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
SSLSessionCacheTimeout  300
#   Semaphore:
#   Configure the path to the mutual exclusion semaphore the
#   SSL engine uses internally for inter-process synchronization. 
#   (Disabled by default, the global Mutex directive consolidates by default
#   this)
#Mutex file:${APACHE_LOCK_DIR}/ssl_mutex ssl-cache

#   SSL Cipher Suite:
#   List the ciphers that the client is permitted to negotiate. See the
#   ciphers(1) man page from the openssl package for list of all available
#   options.
#   Enable only secure ciphers:
SSLCipherSuite HIGH:!aNULL:!MD5
# SSL server cipher order preference:
# Use server priorities for cipher algorithm choice.
# Clients may prefer lower grade encryption.  You should enable this
# option if you want to enforce stronger encryption, and can afford
# the CPU cost, and did not override SSLCipherSuite in a way that puts
# insecure ciphers first.
# Default: Off
#SSLHonorCipherOrder on
#   The protocols to enable.
#   Available values: all, SSLv3, TLSv1, TLSv1.1, TLSv1.2
#   SSL v2  is no longer supported
SSLProtocol all -SSLv2 -SSLv3
#   Allow insecure renegotiation with clients which do not yet support the
#   secure renegotiation protocol. Default: Off
#SSLInsecureRenegotiation on
#   Whether to forbid non-SNI clients to access name based virtual hosts.
#   Default: Off
#SSLStrictSNIVHostCheck On
</IfModule>

这些更改应该会让您开始使用 TLS 1.2。

如果您的服务器用于生产"业务用途",那么研究配置文件和虚拟主机非常重要。

最新更新