AMEN!
Why is it easier to answer dumb question after dumb question here rather than to document the darned product once? (Never mind the cumulative labor of all the programmers trying to figure out and debug the same problems again and again and again, all over the world.)
Consider http://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf. Doesn’t *some* of the responsibility for these (severe and scary!) problems fall on the lack of clear documentation?
It’s a GREAT product and I love it and am grateful but why after years and years do the man pages still say “under construction”?
Charles
From: owner-ope...@openssl.org [mailto:owner-ope...@openssl.org] On Behalf Of Sanford Staab
Sent: Tuesday, November 13, 2012 10:35 AM
To: openss...@openssl.org
Subject: I can't believe how much this sucks
I have been struggling with openssl for a few months now writing batch scripts on windows trying to make a .net web client with a client certificate work with 2-way ssl against an apache web server.
Do you guys just want to continue to answer questions on this alias and not FIX the docs somewhat over time? I could go into a litany of how much information is just missing from the docs with INCOMPLETE everywhere. (see this link for one of the 900k+ hits on a google search of “openssl+docs+suck” for how much hell you guys are putting people through trying to figure out this tool)
openssl is used all over the world by tons of people (so I feel dumb having problems here – but I know from Google I am not alone.) but it is just unbelievable to me that the docs remain so terse and useless for so many years.
I have sent email to this alias previously asking how I can help with this. It seems to me there should be an openssl docs forum where content from this eventually finds its way into the online docs themselves.
A tool is only as good as people are able to use it.
So let me get specific here – one simple specific question (of many that I have) that has me clueless:
The command of:
openssl s_client -connect www.pawnmasterpro.com:443 -CApath ssl\certs -cert ssl\certs\client_1.crt -key ssl\keys\client_1.key -pass file:ssl\keys\Client_1_pwd.txt
results in output containing:
No client certificate CA names sent
from the docs for the s_client command, –cert option says:
The certificate to use, if one is requested by the server. The default is not to use a certificate.
My guess from this is that this command is referring to the CLIENT SSL certificate - no? If my assumption is correct, then why am I getting this error? Or is this a notification of something normal and I should be looking elsewhere?
I have checked the Apache httpd-ssl.cnf file I am using and verified that all the certificate related parts are filled in and I have verified the integrity of all the certificates referenced by it.
I have been able to do straight one-way SSL with the server as well with both IE and Chrome browsers. Two-way SSL fails with the server logs indicating that the client “refused” the connection.
I am using a self-signed CA which was used to sign the server certificate. The client certificate is also signed by the same CA self-signed certificate.
Apache error logs give me this:
[Tue Nov 13 12:38:56 2012] [error] [client 127.0.0.1] Invalid method in request
Which is about as useful as the openssl docs are.
I am also seeing this in openssl’s s_client output:
verify error:num=19:self signed certificate in certificate chain
From what I think I understand, this should not be a showstopper problem as all root CA certs would naturally be self-signed no?
Full output of this operation with the –showcerts command is attached for reference.
I have read through many forum examples of how to do this and it seems simple enough but then when it doesn’t work, figuring out what things MEAN and how to address what is wrong proves to be be very difficult indeed.
Do you guys just want to continue to answer questions on this alias and not FIX the docs somewhat over time? I could go into a litany of how much information is just missing from the docs with INCOMPLETE everywhere.
-- Erwann ABALEA ----- paléocapridé: genre de vieille bique, cf paléotalpidé (vieille taupe) ou paléogadidé (vieille morue)
I have been struggling with openssl for a few months now writing batch scripts on windows trying to make a .net web client with a client certificate work with 2-way ssl against an apache web server.
Do you guys just want to continue to answer questions on this alias and not FIX the docs somewhat over time? I could go into a litany of how much information is just missing from the docs with INCOMPLETE everywhere. (see this link for one of the 900k+ hits on a google search of “openssl+docs+suck” for how much hell you guys are putting people through trying to figure out this tool)openssl is used all over the world by tons of people (so I feel dumb having problems here – but I know from Google I am not alone.) but it is just unbelievable to me that the docs remain so terse and useless for so many years.I have sent email to this alias previously asking how I can help with this. It seems to me there should be an openssl docs forum where content from this eventually finds its way into the online docs themselves.A tool is only as good as people are able to use it.So let me get specific here – one simple specific question (of many that I have) that has me clueless:The command of:openssl s_client -connect www.pawnmasterpro.com:443 -CApath ssl\certs -cert ssl\certs\client_1.crt -key ssl\keys\client_1.key -pass file:ssl\keys\Client_1_pwd.txtresults in output containing:No client certificate CA names sent
from the docs for the s_client command, –cert option says:
- -cert certname
The certificate to use, if one is requested by the server. The default is not to use a certificate.
My guess from this is that this command is referring to the CLIENT SSL certificate - no? If my assumption is correct, then why am I getting this error? Or is this a notification of something normal and I should be looking elsewhere?
I have checked the Apache httpd-ssl.cnf file I am using and verified that all the certificate related parts are filled in and I have verified the integrity of all the certificates referenced by it.I have been able to do straight one-way SSL with the server as well with both IE and Chrome browsers. Two-way SSL fails with the server logs indicating that the client “refused” the connection.
I am using a self-signed CA which was used to sign the server certificate. The client certificate is also signed by the same CA self-signed certificate.Apache error logs give me this:[Tue Nov 13 12:38:56 2012] [error] [client 127.0.0.1] Invalid method in request Which is about as useful as the openssl docs are.
I am also seeing this in openssl’s s_client output:verify error:num=19:self signed certificate in certificate chainFrom what I think I understand, this should not be a showstopper problem as all root CA certs would naturally be self-signed no?Full output of this operation with the –showcerts command is attached for reference.I have read through many forum examples of how to do this and it seems simple enough but then when it doesn’t work, figuring out what things MEAN and how to address what is wrong proves to be be very difficult indeed.
For things that the peer support forum and the existing documentation don't cover, you have the source code, which is definitive.
Additionally, there are professional OpenSSL consultants you can use for help.
It would be more productive to submit bugs and patches, instead of a litany :-)
Do you guys just want to continue to answer questions on this alias and not FIX the docs somewhat over time? I could go into a litany of how much information is just missing from the docs with INCOMPLETE everywhere.
> I am not criticising the documentation for openssl, and will not; but I
> would encourage those who are responsible for maintaining and improving
> openssl to not neglect the documentation. It would be a mistake to leave
it is an Open Source project - thus there is also an onus on the USERS who use the code
to also provide something into the mix - commonly that is for documentation - as
users are often not the ones maintaining or improving the codebase...but are people
USING the API and software (usually for their own purposes and financial gain) - so ideal
for being people to offer something back in the way of , eg, better documentation.
I'd cite a use example - eg Cisco use OpenSSL for their AnyConnect SSL client - they are
using quite a few of the APIs and functions in their commercial product(s) - a proper
symbiotic relationship would be for their expertise to be fed back in the way of
bug fixes and documentation.
coders are often NOT the best documentation writers ;-)
EXACTLY!
Charles
From: owner-ope...@openssl.org [mailto:owner-ope...@openssl.org] On Behalf Of Sanford Staab
Sent: Tuesday, November 13, 2012 12:53 PM
To: openss...@openssl.org
Subject: Re: I can't believe how much this sucks
Couldn’t agree more Ted. I think the bar on open-source product documentation has been going way up over time. If I were these guys, I’d get it right so I wouldn’t have to keep bothering to answer so many questions over and over.
From: Ted Byers
Sent: Tuesday, November 13, 2012 2:49 PM
Subject: Re: I can't believe how much this sucks
On Tue, Nov 13, 2012 at 2:02 PM, Lee Fisher <bli...@gmail.com> wrote:
For things that the peer support forum and the existing documentation don't cover, you have the source code, which is definitive.
Additionally, there are professional OpenSSL consultants you can use for help.
It would be more productive to submit bugs and patches, instead of a litany :-)
Hi,
> Nonsense. No-one knows better how the code ought to be working than the
> folk who developed it. I begin with the assumption that all my coders are
i'd cite the cathedral and the bazaar ...or the 'many eyes make all bugs shallow'
views - if you are given the API and the documents, you use the code without seeing
what its doing. by looking at each library you can see what it does and how it does it
but most importantly, you can see the bugs/issues/problems.
with the closed source proprietary software you expect to get 100% perfect docs because
you cannot see the source code - you are told how it works and what to feed it. thats that.
yes, one can complain until you are blue abotu documentation - and a few comments in this
thread have certainly alerted me to some of OpenSSLs other issues - enough perhaps to look
at GNUTLS or some alternative....'ReallyOpenSSL' anyone? ;-)
That article is unbelievably scary, and your analysis is spot on.
I admit it: I sometimes assume that if the C compiler “likes” (matches to a declaration) what I have coded then it must be correct – given the absence of documentation. Did you see the example in the article of the API where a parameter of 1 meant No and 2 meant Yes, and a programmer had coded it passing a value of true, intending it to mean Yes, but which the compiler (of course) accepted and the function saw as a parameter of 1 (= No)?
Charles
From: owner-ope...@openssl.org [mailto:owner-ope...@openssl.org] On Behalf Of Sanford Staab(Gmail)
Sent: Thursday, November 15, 2012 5:27 AM
To: openss...@openssl.org
Subject: Re: I can't believe how much this sucks
It’s interesting that this article shows that LACK OF GOOD DOCUMENTATION and POOR API DESIGN are at the heart of this problem.
I have noticed over the years that much of our society has changed its very idea of what a "good" application is.
It used to be that if something could not be easily understood or behaved badly or unexpectedly, people would see this as a "bug" in need of fixing.
With the rise in software complexity, requirements for budgets and schedules, we have now evolved to a society of "hoop jumpers" who see software as "good enough" if they can find a path to make it do what they want.
Developers have followed suit, practically forced to do so, and we now have massive amounts of broken code on broken code on broken code.
Ownership of code (ie really taking responsibility for it) is unheard of because the onerous burden of being responsible for your work is simply an open door to a lawyer that wants to steal the fruit of your labor.
It is no wonder under these circumstances that “security by obscurity” has become the defacto standard of the day.
The true bug here is our justice system unfortunately.
I think it is high time for a v2 of openssl, a rewrite almost from scratch, removing support for older protocols and ciphers and simplifying it down with full TDD from start to finish to really correct this problem.
And of course, probably not gonna happen.
But thanks for listening.
Sandy
-----Original Message-----
From: Marco Molteni (mmolteni)
Sent: Thursday, November 15, 2012 4:42 AM
Another amen.
On 11/13/2012 11:34 AM, Sanford Staab wrote:The OpenSSL dev team consists of fairly old-school *NIX folks. It is a low-level library and certificate generation and manipulation tool that has gained significant notoriety for its reliability, stability, and security.
I have been struggling with openssl for a few months now writing batch scripts on windows trying to make a .net web client with a client certificate work with 2-way ssl against an apache web server.
Do you guys just want to continue to answer questions on this alias and not FIX the docs somewhat over time? I could go into a litany of how much information is just missing from the docs with INCOMPLETE everywhere. (see this link for one of the 900k+ hits on a google search of “openssl+docs+suck” for how much hell you guys are putting people through trying to figure out this tool)
openssl is used all over the world by tons of people (so I feel dumb having problems here – but I know from Google I am not alone.) but it is just unbelievable to me that the docs remain so terse and useless for so many years.
I have sent email to this alias previously asking how I can help with this. It seems to me there should be an openssl docs forum where content from this eventually finds its way into the online docs themselves.
A tool is only as good as people are able to use it.
The primary documentation is manpages. This is an outdated method of documenting software and, as I've found, the primary source of many complaints. In this regard, it is time to move on. I can't remember the last time I had to fire up 'man'. I'm much more apt to just run a Google search.
Given my experience with end-users of this product, I've come to the conclusion that there are three distinct forms of documentation needed for OpenSSL:
- API documentation. This is already fairly complete but hard to find everything and needs someone to go over it and update it. Areas that are entirely missing need to be fleshed out. It is also time to consider an alternative format to the traditional manpage.
- Cookbook usage examples. 'openssl' command-line commands to accomplish common tasks in a cookbook format. I can point people to third-party sites (madboa comes to mind). However this sort of thing should really be on the OpenSSL website.
- Complete, easy-to-follow code examples for a variety of common programming tasks. There are the test programs, but I view those more for testing the library for consistency against itself than demonstration on how to code against the library. There's a difference. The OpenSSL website should always have the definitive collection in a copy-and-paste ready format. Also, OpenSSL is used within a variety of programming languages. Examples and integration by language would be ideal. Pick the top three to five languages that cause the most churn on this list (C# comes to mind as #1).
It is approaching six months since the last OpenSSL update. We're probably due for a new set of source releases any time now. So now is the ideal time to talk it up about getting "better documentation" on the dev team's schedule while they begin the planning stages of the next release. If you succeed at this, you'll be my hero of the month because I've been wanting this for ages. You might want to approach the devs though with a little more respect/tact. Saying the documentation "sucks" is a great way to get ignored. Their time is valuable.
--
Thomas Hruska
Shining Light Productions
Home of BMP2AVI and Win32 OpenSSL.
http://www.slproweb.com/
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List openss...@openssl.org
Automated List Manager majo...@openssl.org
It tends to be a shortcoming of many, many types of software documentation that it is feature-oriented rather than task-oriented. That is, it does a good job of saying “this switch does this, that parm specfies that” and a poor job of answering the question “I want to accomplish X. What the heck do I do?” Examples are good, but they are not the only, and perhaps not the best, way of presenting task-oriented documentation. (The trouble with an example is one sometimes finds oneself asking “do I HAVE to do it that way, or did that writer just CHOOSE to do it that way?”)
Charles
From: owner-ope...@openssl.org [mailto:owner-ope...@openssl.org] On Behalf Of John Zavgren
Sent: Monday, November 19, 2012 6:45 AM
To: openss...@openssl.org
Subject: Re: I can't believe how much this sucks
Thomas:
Thomas:You make very good suggestions. Of them all (aside from the use of tact in approaching the developers :-) ), I think that easy-to-follow code examples would improve the openSSL experience more than anything else you identify. These examples could even provide a natural context for the "cookbook usage examples", and then we'd achieve two of your objectives.I can recall situations where I had to incorporate a cartographic calculation in code I was writing, e.g., compute a signature, and was unable to find any examples, and the man pages were a poor starting point. They are good for learning the individual library procedures, but they aren't good for pulling them together to create a working software module. (In fact, when I needed to learn how to compute a signature, I downloaded the openVPN source code and read it.)So, what is a list of easy-to-follow code examples? Here are some suggestions:1.) read private key and a message from a file: encrypt message with private key, write encrypted buffer to (another) file.2.) read cert and private key, read file, compute signature, etc.3.) read file, read signature, read ca certs, validate signature.4.) Example 3 + check CRL.5.) Example 3 + check with OCSP responder.???I'm sure there are a LOT of CA related examples that would help, because I find the creation of a CA to be one of the more painful exercises.