Subject: [Netconf] Confirmation of planned NETCONF over TLS Implementations

From: "Ersue, Mehmet (NSN - DE/Muenich)" <[email-masked]>
Date: Wed, 2 Apr 2008 16:39:58 +0200

Dear All,

during the NETCONF WG session in IETF 71 the co-chairs
asked whether anybody is going to implement the 'NETCONF 
over TLS' draft.

IWRC the result was:

(Planned) Implementations of NETCONF over TLS (0 hands):
No one in the audience was planning to implement.

After the meeting Badra stated that he is implementing.

Q: Others please speak up on the maillist if you are going 
to implement NETCONF over TLS draft.

<Note of the chairs>
We need 2 implementations to be able to get it to draft 
standard status. We think that even for a proposed standard, 
it makes no sense if only one single person is planning to 
implement. A standards track document should be implemented 
by many (at least 2, but preferably many more). 

Therefor the chairs have the opinion that it does not 
make sense to standardize the document if there is no 
other interested party to implement. 
So, please speak up if there is anybody implementing or planning 
to implement.

Note: If someone does not want to disclose his implementation
plans to the list but wants to be counted please send a private 
mail to the co-chairs. We will not disclose the names of people 
who request to be counted as anonymous.

PS: What we are talking about are "implementations with 
independent code base".

Thank you.

Bert & Mehmet
_______________________________________________
Netconf mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/netconf

---

From: [email-masked]
Date: Thu, 3 Apr 2008 01:59:38 +0200 (CEST)

Dear Mehmet, Bert and all,

I confirm that I am working on the implementation.

I hope that people are interested with a second implementation.

Best regards,
Badra

P.S. If you have a TLS client/server implementation, then you can run
NETCONF over TLS with a simple configuration to do a mutual authentication
using certificates:

1-disable the ciphersuites that don't provide mutual authentition using
certificates or PSK.
2- force the server to request a client certificate and stop the
negotiation if no certificate is sent by the client.

OpenSSL case:
-------------
In OpenSSL case, this configuration is as follow:

a) in ssl.h, located in openssl0-9-8g/ssl, line 320

Replace:
#define SSL_DEFAULT_CIPHER_LIST "AES:ALL:NULL:!eNULL:+RC4:@STRENGTH"

With:

#define SSL_DEFAULT_CIPHER_LIST
"AES:ALL:!ADH:!KRB5:!aKRB5:!kKRB5:!aNULL:!eNULL:+RC4:@STRENGTH"

This will disable NULL, Anonymous DH and Kerberos key exchange algorithms.

b) in s3_serv.c, located in openssl0-9-8g/ssl, line 364: set the server to
the state SSL_VERIFY_PEER, which force the server to stop the TLS session
if no certificate is sent by the client

Replace the following:

        s->state=SSL3_ST_SW_CERT_REQ_A;
        s->init_num=0;
        break;

        case SSL3_ST_SW_CERT_REQ_A:
        case SSL3_ST_SW_CERT_REQ_B:
         if (/* don't request cert unless asked for it: */
            !(s->verify_mode & SSL_VERIFY_PFrom [email-masked]  Wed Apr  2 17:01:50 2008
Date: Thu, 3 Apr 2008 01:59:38 +0200 (CEST)
From: [email-masked]
To: [email-masked]
Importance: Normal
Cc: [email-masked]
Subject: Re: [Netconf] Confirmation of planned NETCONF over TLS
 Implementations
Sender: [email-masked]

Dear Mehmet, Bert and all,

I confirm that I am working on the implementation.

I hope that people are interested with a second implementation.

Best regards,
Badra

P.S. If you have a TLS client/server implementation, then you can run
NETCONF over TLS with a simple configuration to do a mutual authentication
using certificates:

1-disable the ciphersuites that don't provide mutual authentition using
certificates or PSK.
2- force the server to request a client certificate and stop the
negotiation if no certificate is sent by the client.

OpenSSL case:
-------------
In OpenSSL case, this configuration is as follow:

a) in ssl.h, located in openssl0-9-8g/ssl, line 320

Replace:
#define SSL_DEFAULT_CIPHER_LIST "AES:ALL:NULL:!eNULL:+RC4:@STRENGTH"

With:

#define SSL_DEFAULT_CIPHER_LIST
"AES:ALL:!ADH:!KRB5:!aKRB5:!kKRB5:!aNULL:!eNULL:+RC4:@STRENGTH"

This will disable NULL, Anonymous DH and Kerberos key exchange algorithms.

b) in s3_serv.c, located in openssl0-9-8g/ssl, line 364: set the server to
the state SSL_VERIFY_PEER, which force the server to stop the TLS session
if no certificate is sent by the client

Replace the following:

        s->state=SSL3_ST_SW_CERT_REQ_A;
        s->init_num=0;
        break;

        case SSL3_ST_SW_CERT_REQ_A:
        case SSL3_ST_SW_CERT_REQ_B:
         if (/* don't request cert unless asked for it: */
            !(s->verify_mode & SSL_VEEER) ||
            /* if SSL_VERIFY_CLIENT_ONCE is set,
             * don't request cert during re-negotiation: */
            ((s->session->peer != NULL) &&
             (s->verify_mode & SSL_VERIFY_CLIENT_ONCE)) ||
            /* never request cert in anonymous ciphersuites
             * (see section "Certificate request" in SSL 3 drafts
             * and in RFC 2246): */
            ((s->s3->tmp.new_cipher->algorithms & SSL_aNULL) &&
             /* ... except when the application insists on verification
             * (against the specs, but s3_clnt.c accepts this for SSL 3) */
             !(s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) ||
             /* never request cert in Kerberos ciphersuites */
              (s->s3->tmp.new_cipher->algorithms & SSL_aKRB5))
                {
                 /* no cert request */
                   skip=1;
                   s->s3->tmp.cert_request=0;
                   s->state=SSL3_ST_SW_SRVR_DONE_A;
              }

With:
           /*set the server to SSL_VERIFY_PEER*/
           s->verify_mode = SSL_VERIFY_PEER;
           s->state=SSL3_ST_SW_CERT_REQ_A;
           s->init_num=0;
           break;

        case SSL3_ST_SW_CERT_REQ_A:
        case SSL3_ST_SW_CERT_REQ_B:
          if (/* don't request cert unless asked for it: */
            !(s->verify_mode & SSL_VERIFY_PEER) ||
            /* if SSL_VERIFY_CLIENT_ONCE is set,
             * don't request cert during re-negotiation: */
             ((s->session->peer != NULL) &&
             (s->verify_mode & SSL_VERIFY_CLIENT_ONCE)))// ||
           {
            /* no cert request */
             skip=1;
             s->s3->tmp.cert_request=0;
             s->state=SSL3_ST_SW_SRVR_DONE_A;
            }

RIFY_PEER) ||
            /* if SSL_VERIFY_CLIENT_ONCE is set,
             * don't request cert during re-negotiation: */
            ((s->session->peer != NULL) &&
             (s->verify_mode & SSL_VERIFY_CLIENT_ONCE)) ||
            /* never request cert in anonymous ciphersuites
             * (see section "Certificate request" in SSL 3 drafts
             * and in RFC 2246): */
            ((s->s3->tmp.new_cipher->algorithms & SSL_aNULL) &&
             /* ... except when the application insists on verification
             * (against the specs, but s3_clnt.c accepts this for SSL 3) */
             !(s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) ||
             /* never request cert in Kerberos ciphersuites */
              (s->s3->tmp.new_cipher->algorithms & SSL_aKRB5))
                {
                 /* no cert request */
                   skip=1;
                   s->s3->tmp.cert_request=0;
                   s->state=SSL3_ST_SW_SRVR_DONE_A;
              }

With:
           /*set the server to SSL_VERIFY_PEER*/
           s->verify_mode = SSL_VERIFY_PEER;
           s->state=SSL3_ST_SW_CERT_REQ_A;
           s->init_num=0;
           break;

        case SSL3_ST_SW_CERT_REQ_A:
        case SSL3_ST_SW_CERT_REQ_B:
          if (/* don't request cert unless asked for it: */
            !(s->verify_mode & SSL_VERIFY_PEER) ||
            /* if SSL_VERIFY_CLIENT_ONCE is set,
             * don't request cert during re-negotiation: */
             ((s->session->peer != NULL) &&
             (s->verify_mode & SSL_VERIFY_CLIENT_ONCE)))// ||
           {
            /* no cert request */
             skip=1;
             s->s3->tmp.cert_request=0;
             s->state=SSL3_ST_SW_SRVR_DONE_A;
            }