Mac上的Apache 2.4.16 El Capitan:如何使其与TLS 1.2一起使用

时间:2015-12-29 17:15:22

标签: apache ssl tls1.2

在我的MacBook Pro中,我使用了带有OpenSSL 1.0.2d的Apache 2.4.16。 我正在尝试使用SSL配置它,它也应该使用TLS 1.2。 所以我创建了一个自签名证书:

openssl req -x509 -nodes -sha256 -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt

我写了httpd-ssl.conf文件,如下所示:

###############################
######## Enable SSL ###########
<IfModule ssl_module>
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
SSLPassPhraseDialog  builtin
#SSLSessionCache shmcb:/Applications/AMPPS/apache/logs/ssl_gcache_data(512000) 
SSLSessionCacheTimeout  300
Mutex default
</IfModule>
###############################

#### Localhost SSL Entries ####
<IfModule ssl_module>
<VirtualHost *:443>
  DocumentRoot "/Users/lory/Sites"
  ServerName localhost
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLHonorCipherOrder on
  SSLCertificateFile "/Users/lory/Sites/localhost.crt"
  SSLCertificateKeyFile "/Users/lory/Sites/localhost.key"
</VirtualHost>

如果我执行sudo apachectl start则可行。无论如何,我试试终端:

openssl s_client -connect localhost:443 -tls1_2

然后这就是我得到的:

CONNECTED(00000003)
140735258165328:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version   number:s3_pkt.c:362:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 5 bytes and written 7 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
  Protocol  : TLSv1.2
  Cipher    : 0000
  Session-ID: 
  Session-ID-ctx: 
  Master-Key: 
  Key-Arg   : None
  PSK identity: None
  PSK identity hint: None
  SRP username: None
  Start Time: 1451408861
  Timeout   : 7200 (sec)
  Verify return code: 0 (ok)
---

我从中推断出事情并不顺利。

事实上,如果我在phpinfo();输出中检查,我会看到:

  • Apache / 2.4.16(Unix)PHP / 5.5.30使用版本的OpenSSL / 0.9.8zg

  • ssl,sslv3,sslv2

等等。我不知道为什么,我以为我已经禁用了它们。 我该如何解决?

更新

特别感谢用户 Myles 发出信号:

截至2016年7月21日,有一个包含OpenSSL 1.0.2的MAMP PRO 4的预发布版,在此处获得预发布版本:

https://www.mamp.info/en/pre-release.html

1 个答案:

答案 0 :(得分:0)

从终端做which openssl。我想你会发现它不是/ usr / bin / openssl。您正在运行通过HomeBrew或MacPorts编译或安装的openssl。 OS X附带的内置Apache无法使用该openssl。它会使用/ usr / bin中的那个,这就是phpinfo()报告0.9.8zg的原因。

尝试/usr/bin/openssl version,您会看到相同的0.9.8zg。

除了编译自己的Apache或使用HomeBrew或MacPorts之外,我认为你不能使用更现代的openssl。