I think I am going to an awful lot of effort because I am missing
something very simple. (And the answer to question you should
first is "No, I really don't *want* to use NT but my client demands it. ")
I am trying two different routes to create an operational SSL enabled
server for a WindowsNT system. (The server will not be public access
but a reporting facility for internal use by my client.) The first try is
to down
load the contributed pre-built version from the ModSSL site. This version
hangs (no, not because I am using HTTP to access the HTTPS
port, it really hangs up tight.) The other route I am trying is to
compile the sources. However, I am very frustrated by MS
development tools I could scream.
The problem with route number one:
----------------------------------------------------
I downloaded the pre-built version of Apache and ModSSL called
Apache_1.3.12-mod_ssl_2.6.1-openssl_0.9.5-WIN32-i386.zip.
I used the openssl.exe program to generate a cert (and key) which
worked with the openssl s_server command and talked to the
openssl s_client command. I then changed httpd.conf to use
this cert and stared apache.exe with -D SSL to reference all
the SSL configuration directives. This appears to work as it says
the password dialog was successful and Apache with modssl
and openssl is running.
However, using openss s_client to talk to either port 443 (or port
80) just hangs. netstat reports an ESTABLISHED connection between
the processes. When I telnet to port 80 and type "GET /" I get
no response. There is nothing in the logs which suggests that
the apache process is aware of the connection which it has
accepted. Also, I cannot control-C our "Break" the process.
I have to use the task manager to stop it. (If I restart the server
with out the -D SSL, telneting to port 80 is fine.)
I have the Random Seeds set to "builtin" so this should not be the
issue (NT has no /dev/random like thing, right?) Also, what could
cause it to hang and not respond to break. Any ideas on how to
get a stack back trace?
Believing myself to be incompetent on NT (with only 4 years of
experience), I built the whole ball of wax (from source) on a Solaris
machine and it all worked first time. So, back to NT...
(If you are still reading along, thank you. Even if you cannot offer
and assistance or advise, I feel better just having chance to
vent. I feel less like an independent contract than an isolated
contractor...)
The problem with route number two:
------------------------------------------------------------
What I need is a good stack trace from my hung Apache process
so I gathered all the sources under MS Visual C++, complied them
and... Learned that MS programming tools are crap. But did get the
software built, except see below:
So now, in my self compiled version of ModSSL, I have a problem
during the module init phase. The ModSSL dll needs to access
the global variable "ap_global_ctx" from the ApacheCore.dll library.
However, it appears that in the loaded and running instance of
ModSSL, this variable is not dynamically linked to the instance
in ApacheCore.dll. As I browse up and down the stack in the
debugger, ap_global_ctx is set and correct when in the
routines from ApacheCore, but is uninitialized and set to
zero (null) in the routines from ModSSL. The calling stack is
this:
...
ap_handle_cmd
invoke_cmd
load_module
ap_single_module_configure
ssl_config_server_create
ssl_config_global_create
ap_ctx_get
*boom* in ap_ctx_get because the ctx pointer (the first
argument) is null, but shouldn't be.
Now, Here is my major confusion with trying to get this figured out.
The ModSSL code never seems to take any positive steps to
access the ApacheCore.DLL to get a pointer or value for ap_global_ctx.
The load module code in ApacheCore is using various routines
to lookup variables in the ModSSL DLL. It seems that either the
dynamic linker should be handling this automatically (and magically)
or it is done manually. If ApacheCore does it manually, why does
not ModSSL do the same? Also, When I use quick view (from the
Windows right click menu) to look at the exports and imports,
ModSSL only imports a value called "_recvwithtimeout" from
the ApacheCore module. This leads me to believe that it should be
doing some variable look ups on it's own.
I am open to suggestions.
-MpH
--------
Mark P. Hahn [EMAIL PROTECTED]
Chief Technical Officer 609 716 9320
TCB Technologies, Inc. Princeton Junction, New Jersey, USA
______________________________________________________________________
Apache Interface to OpenSSL (mod_ssl) www.modssl.org
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]