Author |
|
zhiliao
Joined: 27 Oct 2006 Posts: 6
|
Posted: Fri 27 Oct '06 4:42 Post subject: Apache 2.2.3 with OpenSSL 0.9.9[dev] |
|
|
Has anyone managed to build successfully Apache 2.2.3 with OpenSSL 0.9.9[dev]? I've done so as I need to use OpenSSL 0.9.9[dev] to generate ECC cert. When I tried with openssl s_server, my client (Firefox) could browse to my site running on ECC cert successfully. But when I use my client to connect to my apache web server via 443, my client is getting the error 'Firefox can't connect securely to localhost because the site uses a security protocol which isn't enabled'.
1) Anyone encountered the same problem before? If yes, y and how to solve it?
2) How do I ascertain what ciphers my web server is using other than running openssl ciphers?
Thanks in advance! |
|
Back to top |
|
ali_fareed
Joined: 04 Jul 2006 Posts: 61 Location: Bahrain
|
Posted: Fri 27 Oct '06 20:43 Post subject: |
|
|
The ellipitic curve ciphers in openssl-0.9.9 are not exposed to mod_ssl I think that there is a patch that you can apply but i misplaced the link. and i'm sure that there is a nessus plugin that tells you which ciphers are running on your server. |
|
Back to top |
|
Steffen Moderator
Joined: 15 Oct 2005 Posts: 3092 Location: Hilversum, NL, EU
|
Posted: Fri 27 Oct '06 21:02 Post subject: |
|
|
Ciphers supported in s_server binary can you check with:
openssl s_server -cert cert.pem -key privkey.pem -www
And call then https://localhost:4433
Steffen |
|
Back to top |
|
ali_fareed
Joined: 04 Jul 2006 Posts: 61 Location: Bahrain
|
|
Back to top |
|
zhiliao
Joined: 27 Oct 2006 Posts: 6
|
Posted: Mon 06 Nov '06 4:58 Post subject: |
|
|
Thanks for the advice. I have applied the patch but the same error persist.
Is there any possibility that Apache is refusing to handshake with the client? Under what scenarios would Apache do this other than not being able to negotiate a valid cipher with the client? |
|
Back to top |
|
zhiliao
Joined: 27 Oct 2006 Posts: 6
|
Posted: Mon 06 Nov '06 5:25 Post subject: |
|
|
s_server -cert secp384r1.crt -key secp384r1.key -www
Ciphers supported in s_server binary
TLSv1/SSLv3:ECDHE-RSA-AES256-SHA TLSv1/SSLv3:ECDHE-ECDSA-AES256-SHA
TLSv1/SSLv3:PSK-AES256-CBC-SHA TLSv1/SSLv3:DHE-RSA-AES256-SHA
TLSv1/SSLv3:DHE-DSS-AES256-SHA TLSv1/SSLv3:DHE-RSA-CAMELLIA256-SHA
TLSv1/SSLv3:DHE-DSS-CAMELLIA256-SHA TLSv1/SSLv3:ECDH-RSA-AES256-SHA
TLSv1/SSLv3:ECDH-ECDSA-AES256-SHA TLSv1/SSLv3:AES256-SHA
TLSv1/SSLv3:CAMELLIA256-SHA TLSv1/SSLv3:ECDHE-RSA-DES-CBC3-SHA
TLSv1/SSLv3:ECDHE-ECDSA-DES-CBC3-SHA TLSv1/SSLv3:PSK-3DES-EDE-CBC-SHA
TLSv1/SSLv3:EDH-RSA-DES-CBC3-SHA TLSv1/SSLv3:EDH-DSS-DES-CBC3-SHA
TLSv1/SSLv3:ECDH-RSA-DES-CBC3-SHA TLSv1/SSLv3:ECDH-ECDSA-DES-CBC3-SHA
TLSv1/SSLv3:DES-CBC3-SHA SSLv2 :DES-CBC3-MD5
TLSv1/SSLv3:ECDHE-RSA-AES128-SHA TLSv1/SSLv3:ECDHE-ECDSA-AES128-SHA
TLSv1/SSLv3:PSK-AES128-CBC-SHA TLSv1/SSLv3:DHE-RSA-AES128-SHA
TLSv1/SSLv3:DHE-DSS-AES128-SHA TLSv1/SSLv3:DHE-RSA-CAMELLIA128-SHA
TLSv1/SSLv3:DHE-DSS-CAMELLIA128-SHA TLSv1/SSLv3:ECDH-RSA-AES128-SHA
TLSv1/SSLv3:ECDH-ECDSA-AES128-SHA TLSv1/SSLv3:AES128-SHA
TLSv1/SSLv3:CAMELLIA128-SHA TLSv1/SSLv3:IDEA-CBC-SHA
SSLv2 :IDEA-CBC-MD5 SSLv2 :RC2-CBC-MD5
TLSv1/SSLv3:ECDHE-RSA-RC4-SHA TLSv1/SSLv3:ECDHE-ECDSA-RC4-SHA
TLSv1/SSLv3:PSK-RC4-SHA TLSv1/SSLv3:ECDH-RSA-RC4-SHA
TLSv1/SSLv3:ECDH-ECDSA-RC4-SHA TLSv1/SSLv3:RC4-SHA
TLSv1/SSLv3:RC4-MD5 SSLv2 :RC4-MD5
TLSv1/SSLv3:EDH-RSA-DES-CBC-SHA TLSv1/SSLv3:EDH-DSS-DES-CBC-SHA
TLSv1/SSLv3:DES-CBC-SHA SSLv2 :DES-CBC-MD5
TLSv1/SSLv3:EXP-EDH-RSA-DES-CBC-SHA TLSv1/SSLv3:EXP-EDH-DSS-DES-CBC-SHA
TLSv1/SSLv3:EXP-DES-CBC-SHA TLSv1/SSLv3:EXP-RC2-CBC-MD5
SSLv2 :EXP-RC2-CBC-MD5 TLSv1/SSLv3:EXP-RC4-MD5
SSLv2 :EXP-RC4-MD5
---
Ciphers common between both SSL end points:
ECDHE-ECDSA-AES256-SHA ECDHE-RSA-AES256-SHA DHE-RSA-AES256-SHA
DHE-DSS-AES256-SHA ECDH-RSA-AES256-SHA ECDH-ECDSA-AES256-SHA
AES256-SHA ECDHE-ECDSA-RC4-SHA ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-RC4-SHA ECDHE-RSA-AES128-SHA DHE-RSA-AES128-SHA
DHE-DSS-AES128-SHA ECDH-RSA-RC4-SHA ECDH-RSA-AES128-SHA
ECDH-ECDSA-RC4-SHA ECDH-ECDSA-AES128-SHA RC4-MD5
RC4-SHA AES128-SHA ECDHE-ECDSA-DES-CBC3-SHA
ECDHE-RSA-DES-CBC3-SHA EDH-RSA-DES-CBC3-SHA EDH-DSS-DES-CBC3-SHA
ECDH-RSA-DES-CBC3-SHA ECDH-ECDSA-DES-CBC3-SHA DES-CBC3-SHA
---
New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES256-SHA
SSL-Session:
Protocol : TLSv1
Cipher : ECDHE-ECDSA-AES256-SHA
Session-ID: 7DC349FEC0337AAE8FC5CAA7CF54D3C7BF8E6E662E937646020F7E3DBC75BC7B
Session-ID-ctx: 01000000
Master-Key: CF2A366EC52E2CD0046785AC9D0C050F6F68226189B063334DBB159FB5A21A69D52C3273CD3A6BAC078DEB94A2C1683F
Key-Arg : None
PSK identity: None
PSK identity hint: None
Start Time: 1162783300
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
1 items in the session cache
0 client connects (SSL_connect())
0 client renegotiates (SSL_connect())
0 client connects that finished
1 server accepts (SSL_accept())
0 server renegotiates (SSL_accept())
1 server accepts that finished
0 session cache hits
0 session cache misses
0 session cache timeouts
0 callback cache hits
0 cache full overflows (128 allowed)
---
no client certificate available
The above is what I received after I run the s_server command. But this only shows the ciphers OpenSSL support. It doesn't show what ciphers Apache is supporting, right? |
|
Back to top |
|
zhiliao
Joined: 27 Oct 2006 Posts: 6
|
Posted: Tue 07 Nov '06 4:21 Post subject: Re: Apache 2.2.3 with OpenSSL 0.9.9[dev] |
|
|
zhiliao wrote: | Has anyone managed to build successfully Apache 2.2.3 with OpenSSL 0.9.9[dev]? I've done so as I need to use OpenSSL 0.9.9[dev] to generate ECC cert. When I tried with openssl s_server, my client (Firefox) could browse to my site running on ECC cert successfully. But when I use my client to connect to my apache web server via 443, my client is getting the error 'Firefox can't connect securely to localhost because the site uses a security protocol which isn't enabled'.
1) Anyone encountered the same problem before? If yes, y and how to solve it?
2) How do I ascertain what ciphers my web server is using other than running openssl ciphers?
Thanks in advance! |
This is the latest log I've got when I set the log level to debug.
[Tue Nov 07 10:18:25 2006] [info] Loading certificate & private key of SSL-aware server
[Tue Nov 07 10:18:25 2006] [debug] ssl_engine_pphrase.c(469): unencrypted ECC private key - pass phrase not required
[Tue Nov 07 10:18:27 2006] [info] Configuring server for SSL protocol
[Tue Nov 07 10:18:27 2006] [debug] ssl_engine_init.c(408): Creating new SSL context (protocols: SSLv2, SSLv3, TLSv1)
[Tue Nov 07 10:18:27 2006] [debug] ssl_engine_init.c(608): Configuring permitted SSL ciphers [ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL]
[Tue Nov 07 10:18:27 2006] [debug] ssl_engine_init.c(784): Configuring ECC server private key
[Tue Nov 07 10:18:28 2006] [info] Loading certificate & private key of SSL-aware server
[Tue Nov 07 10:18:28 2006] [debug] ssl_engine_pphrase.c(469): unencrypted ECC private key - pass phrase not required
[Tue Nov 07 10:18:29 2006] [info] Configuring server for SSL protocol
[Tue Nov 07 10:18:29 2006] [debug] ssl_engine_init.c(408): Creating new SSL context (protocols: SSLv2, SSLv3, TLSv1)
[Tue Nov 07 10:18:29 2006] [debug] ssl_engine_init.c(608): Configuring permitted SSL ciphers [ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL]
[Tue Nov 07 10:18:29 2006] [debug] ssl_engine_init.c(784): Configuring ECC server private key
[Tue Nov 07 10:18:30 2006] [info] Loading certificate & private key of SSL-aware server
[Tue Nov 07 10:18:30 2006] [debug] ssl_engine_pphrase.c(469): unencrypted ECC private key - pass phrase not required
[Tue Nov 07 10:18:30 2006] [info] Configuring server for SSL protocol
[Tue Nov 07 10:18:30 2006] [debug] ssl_engine_init.c(408): Creating new SSL context (protocols: SSLv2, SSLv3, TLSv1)
[Tue Nov 07 10:18:30 2006] [debug] ssl_engine_init.c(608): Configuring permitted SSL ciphers [ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL]
[Tue Nov 07 10:18:30 2006] [debug] ssl_engine_init.c(784): Configuring ECC server private key
[Tue Nov 07 10:18:31 2006] [info] Loading certificate & private key of SSL-aware server
[Tue Nov 07 10:18:31 2006] [debug] ssl_engine_pphrase.c(469): unencrypted ECC private key - pass phrase not required
[Tue Nov 07 10:18:33 2006] [info] Configuring server for SSL protocol
[Tue Nov 07 10:18:33 2006] [debug] ssl_engine_init.c(408): Creating new SSL context (protocols: SSLv2, SSLv3, TLSv1)
[Tue Nov 07 10:18:33 2006] [debug] ssl_engine_init.c(608): Configuring permitted SSL ciphers [ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL]
[Tue Nov 07 10:18:33 2006] [debug] ssl_engine_init.c(784): Configuring ECC server private key
[Tue Nov 07 10:18:38 2006] [info] [client 127.0.0.1] Connection to child 249 established (server www.example.com:443)
[Tue Nov 07 10:18:38 2006] [info] Seeding PRNG with 144 bytes of entropy
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_kernel.c(1780): OpenSSL: Handshake: start
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_kernel.c(1788): OpenSSL: Loop: before/accept initialization
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1775): OpenSSL: read 11/11 bytes from BIO#53c8f8 [mem: 5d0010] (BIO dump follows)
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1722): +-------------------------------------------------------------------------+
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0000: 80 6d 01 03 00 00 54 00-00 00 10 .m....T.... |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1753): +-------------------------------------------------------------------------+
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1775): OpenSSL: read 100/100 bytes from BIO#53c8f8 [mem: 5d001b] (BIO dump follows)
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1722): +-------------------------------------------------------------------------+
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0000: 00 c0 0a 00 c0 14 00 00-39 00 00 38 00 c0 0f 00 ........9..8.... |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0010: c0 05 00 00 35 00 c0 07-00 c0 09 00 c0 11 00 c0 ....5........... |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0020: 13 00 00 33 00 00 32 00-c0 0c 00 c0 0e 00 c0 02 ...3..2......... |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0030: 00 c0 04 00 00 04 00 00-05 00 00 2f 00 c0 08 00 .........../.... |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0040: c0 12 00 00 16 00 00 13-00 c0 0d 00 c0 03 00 fe ................ |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0050: ff 00 00 0a 5b 50 b2 e9-25 9a 13 c4 60 5f 86 5e ....[P..%...`_.^ |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1747): | 0060: 9e 50 2c d8 .P,. |
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_io.c(1753): +-------------------------------------------------------------------------+
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_kernel.c(1798): OpenSSL: Write: SSLv3 read client hello B
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_kernel.c(1817): OpenSSL: Exit: error in SSLv3 read client hello B
[Tue Nov 07 10:18:38 2006] [debug] ssl_engine_kernel.c(1817): OpenSSL: Exit: error in SSLv3 read client hello B
[Tue Nov 07 10:18:38 2006] [info] [client 127.0.0.1] SSL library error 1 in handshake (server www.example.com:443)
[Tue Nov 07 10:18:38 2006] [info] SSL Library Error: 336109761 error:1408A0C1:SSL routines:SSL3_GET_CLIENT_HELLO:no shared cipher Too restrictive SSLCipherSuite or using DSA server certificate?
[Tue Nov 07 10:18:38 2006] [info] [client 127.0.0.1] Connection closed to child 249 with abortive shutdown (server www.example.com:443)
I'm puzzled that the loading of cert actually occurred 4 times. Is this normal? |
|
Back to top |
|
ali_fareed
Joined: 04 Jul 2006 Posts: 61 Location: Bahrain
|
Posted: Wed 08 Nov '06 15:14 Post subject: |
|
|
I just noticed your reply yes its normal I get that too apache for some reason loads the certificates and generates the temporary keys and parameters 4 times I just compiled apache/2.2.3 with openssl/0.9.9.9 and I applied the patch I used an ecdsa certificate with the secp521r1 curve and it worked I was able to connect using firefox 2.0 and s_client check out the logs
Code: | [08/Nov/2006:14:45:03 +0300] 127.0.0.1 TLSv1 ECDHE-ECDSA-AES256-SHA "GET / HTTP/1.1" - |
|
|
Back to top |
|
zhiliao
Joined: 27 Oct 2006 Posts: 6
|
Posted: Thu 09 Nov '06 3:23 Post subject: |
|
|
ali_fareed wrote: | I just noticed your reply yes its normal I get that too apache for some reason loads the certificates and generates the temporary keys and parameters 4 times I just compiled apache/2.2.3 with openssl/0.9.9.9 and I applied the patch I used an ecdsa certificate with the secp521r1 curve and it worked I was able to connect using firefox 2.0 and s_client check out the logs
Code: | [08/Nov/2006:14:45:03 +0300] 127.0.0.1 TLSv1 ECDHE-ECDSA-AES256-SHA "GET / HTTP/1.1" - |
|
Why is it that yours work and mine don't.
1)Hmm, are you using OpenSSL 0.9.9[dev]? I'm not aware there's 0.9.9.9?
2) Did you generate the ECDSA certificate from openssl?
3) Any possibility of sending your cert in PKCS12 for me to test?
4) Which release of firefox 2.0 did you tried with? I've tried with firefox 2 beta 1.
5) On what platform did you complied your Apache and OpenSSL on? I'm using W2K server with SP4.
6) I've not edited the default SSLCipherSuite in httpd-ssl.conf. Had you?
I'm trying to see what could be the difference between our configurations.
When running nmake -f ms\ntdll.mak, I've encoutered the error:
.\crypto\bio\b_sock.c(728) : error C2037: left of 'sin6_addr' specifies undefined struct/union 'sockaddr_in6'
.\crypto\bio\b_sock.c(728) : error C2037: left of 'sin6_addr' specifies undefined struct/union 'sockaddr_in6'
.\crypto\bio\b_sock.c(728) : error C2168: 'memset' : too few actual parameters for intrinsic function
.\crypto\bio\b_sock.c(729) : error C2037: left of 'sin6_addr' specifies undefined struct/union 'sockaddr_in6'
and I then commented out line 728 and 729.
I was thinking since I'm using W2K and won't need IPv6, thus commented them out.
I run nmake -f ms\ntdll.mak a second time and error the error:
rc /fo"tmp32dll\libeay32.res" /d CRYPTO ms\version32.rc
link /nologo /subsystem:console /opt:ref /dll /out:out32dll\libeay32.dll /def:ms/LIBEAY32.def @C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nm5DB.tmp
ms/LIBEAY32.def(7) : warning LNK4017: DESCRIPTION statement not supported for the target platform; ignored
LIBEAY32.def : error LNK2001: unresolved external symbol IMPLEMENT_ASN1_SET_OF
out32dll\libeay32.lib : fatal error LNK1120: 1 unresolved externals
I then remove IMPLEMENT_ASN1_SET_OF from ms/LIBEAY32.def
Have you encountered these 2 errors? Any impact in what I've done?
Greatly appreciate your advise. Thanks very much!!! |
|
Back to top |
|
ali_fareed
Joined: 04 Jul 2006 Posts: 61 Location: Bahrain
|
Posted: Thu 09 Nov '06 9:46 Post subject: |
|
|
I'm using openssl 0.9.9.9[dev] i got it from ftp://ftp.openssl.org/snapshot/. yeah i generated it using openssl. I am away at the moment but i will email you a cert in pkcs12 as soon as i reach home. I got firefox 2.0 from here http://www.mozilla.com/en-US/firefox/. I compiled apache and openssl on a windows xp sp2 using vc 2005 .net but i didnt encounter any errors .I didnt change the ciphersuites |
|
Back to top |
|
ali_fareed
Joined: 04 Jul 2006 Posts: 61 Location: Bahrain
|
|
Back to top |
|
zhiliao
Joined: 27 Oct 2006 Posts: 6
|
Posted: Fri 10 Nov '06 7:54 Post subject: |
|
|
Hi,
I've got the connection working fine now. But am not sure what trigger it to be ok. I just did a new compilation of OpenSSL and Apache (with the projects and patch).
Thanks very much for your help. Knowing someone has got it working definitely motivated me! |
|
Back to top |
|