mai 19
Testé sous Ubuntu 8.10

Il est parfois nécessaire d’associer un lecteur de newsgroup avec une connexion SSL vers un serveur de newsgroup.
Pan est un excellent lecteur de newsgroup sous Linux mais n’est prévu pour gérer une connection SSL.
Cependant, le système Linux est tellement modulable qu’il existe des solutions. Une consiste à utiliser stunnel qui est tout indiqué pour gérer des connections SSL.

L’idée, assez géniale quand même, est de configurer Pan avec comme serveur de newsgroup sa propre machine (localhost ou 127.0.0.1) et de confier à stunnel le soin de se connecter au vrai serveur de newsgroup via SSL. Grosso modo, Pan va appeler le “service” nntp (service des newsgroup) géré par stunnel.

Installation

sudo apt-get install pan stunnel4

Configuration stunnel

Les principaux fichiers de configuration sont :

/etc/default/stunnel4

# /etc/default/stunnel
# Julien LEMOINE
# September 2003

# Change to one to enable stunnel
ENABLED=1
FILES=”/etc/stunnel/*.conf”
OPTIONS=”"
# Change to one to enable ppp restart scripts
PPP_RESTART=0

Par rapport au fichier initial, on a juste changé la ligne ENABLED=0 par ENABLED=1.

/etc/stunnel/stunnel.conf

; Sample stunnel configuration file by Michal Trojnara 2002-2006
; Some options used here may not be adequate for your particular configuration
; Please make sure you understand them (especially the effect of chroot jail)

; Certificate/key is needed in server mode and optional in client mode
;cert = /etc/stunnel/mail.pem
;key = /etc/stunnel/mail.pem

; Protocol version (all, SSLv2, SSLv3, TLSv1)
sslVersion = SSLv3

; Some security enhancements for UNIX systems - comment them out on Win32
chroot = /var/lib/stunnel4/
setuid = stunnel4
setgid = stunnel4
; PID is created inside chroot jail
pid = /stunnel4.pid

; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
;compression = rle

; Workaround for Eudora bug
;options = DONT_INSERT_EMPTY_FRAGMENTS

; Authentication stuff
;verify = 2
; Don’t forget to c_rehash CApath
; CApath is located inside chroot jail
;CApath = /certs
; It’s often easier to use CAfile
;CAfile = /etc/stunnel/certs.pem
; Don’t forget to c_rehash CRLpath
; CRLpath is located inside chroot jail
;CRLpath = /crls
; Alternatively you can use CRLfile
;CRLfile = /etc/stunnel/crls.pem

; Some debugging stuff useful for troubleshooting
debug = 7
output = /var/log/stunnel4/stunnel.log

; Use it for client mode
client = yes

; Service-level configuration

[pop3s]
accept = 995
connect = 110

[imaps]
accept = 993
connect = 143

[ssmtp]
accept = 465
connect = 25

;[https]
;accept = 443
;connect = 80
;TIMEOUTclose = 0

; vim:ft=dosini

[nntp]
accept = 127.0.0.1:119
connect = nom_serveur_newsgroup:563

Par rapport au fichier initial, les lignes suivantes ont été modifié ou ajouté

; Use it for client mode
client = yes

[nntp]
accept = 127.0.0.1:119
connect = nom_serveur_newsgroup:563

Configuration Pan

On Lance Pan et on modifie les paramètres du serveur de newsgroup via le menu Edit puis Edit News Server.
Les paramètres de location doivent être :

adresse : localhost
port : 119

On laisse les éventuelles informations concernant le login/password si nécessaire.

Lancer stunnel4

Il ne reste plus qu’à lancer stunnel4 pour en avoir le coeur net.

sudo /etc/init.d/stunnel start

Normalement, Pan devrait avoir une connection SSL à votre serveur de newsgroup préféré.

En cas de soucis

plusieurs éléments à vérifier.

  • netstat -l | grep nntp pour vérifier si le service nntp est bien lancé
  • Aller voir les logs de stunnel4 si jamais vous avez eue l’idée d’activer un fichier log dans le fichier /etc/stunnel/stunnel.conf
  • Aller voir les informations fournis par Pan lui même
nov 25

Activation du mode SSL pour Apache

a2enmod ssl

Création des certificats

On va créer un certificat autosigné pour un site désormais célèbre toto.
Pour cela, on crée un répertoire du genre __sslconf__.

testing:~# mkdir sslconf

testing:~# cd sslconf/

testing:~/sslconf# openssl req -config /etc/ssl/openssl.cnf -new -out toto.csr

Generating a 1024 bit RSA private key
…++++++
writing new private key to ‘privkey.pem’
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:PARIS
Locality Name (eg, city) []:PARIS
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MOI
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:MOI
Email Address []:moi@moi.fr

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Une fois terminée cette opération, on obtient alors deux nouveaux fichiers comme indiqué ci-dessous.

testing:~/sslconf# ls -l
total 2
-rw-r–r– 1 root root 660 2007-02-20 19:37 toto.csr
-rw-r–r– 1 root root 963 2007-02-20 19:37 privkey.pem

Maintenant, on doit créer une “pass phrase”.

testing:~/sslconf# openssl rsa -in privkey.pem -out toto.key
Enter pass phrase for privkey.pem:
writing RSA key

On se crée un certificat valable pour 3650 jours!!

testing:~/sslconf# openssl x509 -in toto.csr -out toto.crt -req -signkey toto.key -days 3650

Signature ok

subject=/C=FR/ST=PARIS/L=PARIS/O=MOI/CN=MOI/emailAddress=moi@moi.fr

Getting Private key

testing:~/sslconf# openssl x509 -in toto.crt -out toto.der.crt -outform DER

Copie des certificats pour Apache

testing:~/sslconf# cp toto.crt toto.key /etc/apache2/

Configuration APACHE

# Modifier le fichier /etc/apache2/ports.conf

On rajoute la ligne “Listen 443″ à ce fichier pour obtenir

Listen 80
Listen 443

# reste a modifier le fichier /etc/apache2/mods-available/ssl.conf

on rajoute au debut les deux lignes suivantes :

SSLCertificateFile /etc/apache2/toto.crt

SSLCertificateKeyFile /etc/apache2/toto.key

On relance Apache et le tour est joué.