<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Kevin Keane skrev:
<blockquote cite="mid:49CA8AAF.70007@kkeane.com" type="cite">
  <pre wrap="">Michael Medin wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">Kevin Keane skrev:
    </pre>
    <blockquote type="cite">
      <pre wrap="">Wouldn't the SSL certificates provide authentication comparable to 
SSH keys? I'm not familiar with how NRPE uses SSL, but I would assume 
that you could also use client certificates?
  
      </pre>
    </blockquote>
    <pre wrap="">I am no expert but AFAIK it merely encrypts the traffic ie, no 
certificates at all. If someone knows hoe to use certificates please 
feel free to let me know so I can add it to NSClient++ but what I have 
seen it is not possible...
    </pre>
  </blockquote>
  <pre wrap=""><!---->No, that wouldn't be possible. Encryption always requires some form of 
key or another. In SSL, the key is embedded in the server's certificate. 
The client certificate is optional; it also contains a second encryption 
key. If you use client certificates, in effect the traffic is doubly 
encrypted.
  </pre>
</blockquote>
Humm.<br>
The cipher used is ADH which is "anonymous DH cipher suites" in
addition to a "pre shared *known* secret" (read un-secret). Again I am
no expert but I always interpreted the "secret key" (DH) thingy as a
key and not a certificate but mayhap I got it all wrong? (in which case
it might be possible to use proper certificates?)<br>
<br>
And I am actually using openssl but mayhap it has a built-in keystore
as well?<br>
<br>
// Michael Medin <br>
<blockquote cite="mid:49CA8AAF.70007@kkeane.com" type="cite">
  <pre wrap="">
You almost certainly *are* using certificates in NSClient++. But if you 
are using the standard Windows API functions, Windows transparently 
hides most of that complexity from you; the MSXML object and its ilk 
take care of it. You would be using the certificates from the Internet 
Explorer key store.


Actually, when I described how the SSL connection can use single or 
double encryption, I lied. It is more complicated than that. The SSL 
keys are extremely long (1024, 2048 bits or more), and they have to be 
because by nature they don't change over years. SSL keys in the 
certificates are also the public keys of a public/private key pair. 
These factors make using the SSL key for encryption *extremely* slow. 
That is why in reality, public key encryption is only used for extremely 
short messages (measured in bytes, not kilobytes).

To work around that, the client and the server generate yet another 
random key, this time a symmetric key (which has to be kept secret from 
anybody). This symmetric key is usually 128 bits or 256 bits. Unlike 
public-key encryption, symmetric encryption can be implemented very 
fast. This key is sent using the slow public-key encryption. The actual 
traffic is then encrypted using this second key, which will be thrown 
away after the connection ends.

Incidentally, SSH works basically the same way. The only substantial 
difference is that the public keys comes from the authorized_keys file 
instead of a certificate.

Both SSL and SSH actually allow you to use various different encryption 
algorithms and mechanisms for exchanging keys under the hood. You may, 
for instance, see DHE for the key exchange, RSA for the public/private 
encryption, and AES for the symmetric encryption and SHA for hashing 
(which I haven't even touched on).

  </pre>
</blockquote>
<br>
</body>
</html>