mlelorra Posté(e) le 4 août 2017 Posté(e) le 4 août 2017 Bonjour J'ai un NAS DS211j sous DSM6. J'y accède de 2 façons : depuis Internet (sur l'adresse publique de ma box qui est ensuite routé en NAT) et depuis mon réseau local (en https://192.168.0.x) J'ai créé un certificat avec Let's Encrypt et cela fonctionne plutôt bien pour l'accès depuis Internet. Mais ... je ne sais pas comment créer un second certificat pour l'accès local. J'ai tenté un certificat auto-signé (qui me semble l'option la plus logique), sans succès. Sauriez-vous me dire comment faire ? si il y a une "bonne méthode" ? Je vous remercie 0 Citer
Fenrir Posté(e) le 4 août 2017 Posté(e) le 4 août 2017 Il y a techniquement plusieurs manières propres d'arriver à tes fins, mais en pratique la plus simple (qui est aussi la plus conviviale et la plus performante) consiste à installer un serveur DNS dans ton réseau local. Tu trouveras plusieurs tuto ici : http://www.nas-forum.com/forum/forum/28-tutoriels/ Si l'approche DNS ne te conviens pas et que tu es seul à utiliser le NAS, tu peux créer ta propre autorité de certification afin de mettre ce que tu veux dans tes certificats (nom de domaine+ip+...). J'ai fait ce script il y a quelques années, pas testé depuis, mais il devrait encore fonctionner : #!/bin/sh # license : WTFPL ################################################################################ #DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE # # Version 2, December 2004 # # # #Copyright (C) 2014 Fenrir <don't want spam> # # # #Everyone is permitted to copy and distribute verbatim or modified # #copies of this license document, and changing it is allowed as long # #as the name is changed. # # # # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE # # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION # # # # 0. You just DO WHAT THE FUCK YOU WANT TO. # ################################################################################ # Directory where you want to install the stuff baseDir="/volume1/CA" # External domain name (from Internet) extDomain='publicdomain.name' # Internal domain name (from lan) intDomain='privatedomaine.name' # Server name srvName=`hostname -s` # External IP (from Internet) extIP='0.0.0.0' # Internal IP (from lan) intIP=`hostname -i` # Public server name dns1=$srvName.$extDomain # Private server name dns2=$srvName.$intDomain # Short server name dns3=$srvName # Public IP Address ip1=$extIP # Public IP Address ip2=$intIP # Country Name (2 letter code) countryName_default='FR' # State or Province Name (full name) stateOrProvinceName_default='IDF' # Locality Name (eg, city) localityName_default='My City' # Organization Name (eg, company) organizationName_default='My Home' # Organizational Unit Name (eg, section) organizationalUnitName_default='IT' # Email Address emailAddress_default='my@email.address' ################################################################### cd $baseDir mkdir $baseDir/ca mkdir $baseDir/ca/newcerts mkdir $baseDir/crt mkdir $baseDir/csr mkdir $baseDir/key mkdir $baseDir/rev cat <<EOT > $baseDir/openssl.cnf dir = $baseDir HOME = $baseDir RANDFILE = $baseDir/ca/.rnd [ ca ] default_ca = CA_default [ CA_default ] certs = $baseDir/ca/certs new_certs_dir = $baseDir/ca/newcerts database = $baseDir/ca/index.txt certificate = $baseDir/ca/ca.crt serial = $baseDir/ca/serial private_key = $baseDir/ca/ca.key default_days = 3650 default_md = sha256 preserve = no policy = policy_match [ policy_match ] countryName = optional stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_md = sha256 default_bits = 2048 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes req_extensions = v3_req string_mask = nombstr [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = ###countryName_default### countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = ###stateOrProvinceName_default### localityName = Locality Name (eg, city) localityName_default = ###localityName_default### 0.organizationName = Organization Name (eg, company) 0.organizationName_default = ###organizationName_default### organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = ###organizationalUnitName_default### commonName = Common Name (eg, YOUR name) commonName_max = 64 emailAddress = Email Address emailAddress_default = ###emailAddress_default### emailAddress_max = 64 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 unstructuredName = An optional company name [ usr_cert ] basicConstraints = CA:FALSE nsComment = "OpenSSL Private Certificat" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer #nsCaRevocationUrl = http://... #nsRevocationUrl = http://... [ v3_req ] basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [CA] nsComment = "OpenSSL Private Certificat" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always basicConstraints = critical,CA:TRUE,pathlen:0 keyUsage = keyCertSign, cRLSign default_md = sha256 [SERVER] nsComment = "OpenSSL Private Certificat" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always issuerAltName = issuer:copy basicConstraints = critical,CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment nsCertType = server extendedKeyUsage = serverAuth #crlDistributionPoints = URI:http://... subjectAltName = @alt_names [alt_names] DNS.1 = ###dns1### DNS.2 = ###dns2### DNS.3 = ###dns3### IP.1 = ###ip1### IP.2 = ###ip2### [ v3_ca ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always basicConstraints = CA:true [ crl_ext ] authorityKeyIdentifier = keyid:always,issuer:always [ proxy_cert_ext ] basicConstraints = CA:FALSE nsComment = "OpenSSL Private Certificat" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always proxyCertInfo = critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo EOT sed -i "s/###countryName_default###/${countryName_default}/g" $baseDir/openssl.cnf sed -i "s/###stateOrProvinceName_default###/${stateOrProvinceName_default}/g" $baseDir/openssl.cnf sed -i "s/###localityName_default###/${localityName_default}/g" $baseDir/openssl.cnf sed -i "s/###organizationName_default###/${organizationName_default}/g" $baseDir/openssl.cnf sed -i "s/###organizationalUnitName_default###/${organizationalUnitName_default}/g" $baseDir/openssl.cnf sed -i "s/###emailAddress_default###/${emailAddress_default}/g" $baseDir/openssl.cnf sed -i "s/###dns1###/${dns1}/g" $baseDir/openssl.cnf sed -i "s/###dns2###/${dns2}/g" $baseDir/openssl.cnf sed -i "s/###dns3###/${dns3}/g" $baseDir/openssl.cnf sed -i "s/###ip1###/${ip1}/g" $baseDir/openssl.cnf sed -i "s/###ip2###/${ip2}/g" $baseDir/openssl.cnf touch $baseDir/ca/index.txt echo 0001 > $baseDir/ca/serial openssl_bin=`which openssl` # Create Certificate Authority echo "################################################################################" echo "# #" echo "# Create Certificate Authority #" echo "# #" echo "################################################################################" $openssl_bin req -new -x509 -config ./openssl.cnf -sha256 -newkey rsa:2048 -nodes -days 3650 -keyout ca/ca.key -out ca/ca.crt # Create certificat request echo "################################################################################" echo "# #" echo "# Create certificat request : take care about Common name #" echo "# #" echo "################################################################################" $openssl_bin req -new -config ./openssl.cnf -newkey rsa:2048 -nodes -sha256 -keyout key/$srvName.key -out csr/$srvName.csr # Signing the certificate echo "################################################################################" echo "# #" echo "# Signing the certificate #" echo "# #" echo "################################################################################" $openssl_bin ca -config ./openssl.cnf -extensions SERVER -in csr/$srvName.csr -notext -out crt/$srvName.crt echo "################################################################################" echo "# #" echo "# !!! PRIVATE !!! key #" echo "# #" echo "################################################################################" cat key/$srvName.key echo "################################################################################" echo "# #" echo "# Certificate #" echo "# #" echo "################################################################################" cat crt/$srvName.crt 0 Citer
mlelorra Posté(e) le 5 août 2017 Auteur Posté(e) le 5 août 2017 (modifié) Merci Fenrir. Je viens d'installer le serveur DNS mais... j'ai une BBox Fibre et ... je ne peux pas demander à son DHCP de distribuer un DNS autre que celui de la BBox lui-même. Cela voudrait-il dire qu'il faille que je désactive le DHCP de la BBox et que je fasse porter cette fonction par le NAS ? Tout ça pour ne pas avoir le message "certificat valide" quand j'utilise mon Syno en local... ça ressemble à une massue pour écraser une mouche. Non ? ps: au passage, je n'arrive pas à comprendre en quoi ce changement de DNS résoudra mon problème. Est ce que tu aurais une clé de compréhension ? Modifié le 5 août 2017 par mlelorra 0 Citer
Fenrir Posté(e) le 5 août 2017 Posté(e) le 5 août 2017 Il y a 8 heures, mlelorra a dit : Cela voudrait-il dire qu'il faille que je désactive le DHCP de la BBox et que je fasse porter cette fonction par le NAS ? C'est le plus simple. Il y a 8 heures, mlelorra a dit : ça ressemble à une massue pour écraser une mouche. Non ? non, je ne trouve pas, c'est juste un petit changement pour palier aux manque de fonctionnalités de ta box Il y a 8 heures, mlelorra a dit : Est ce que tu aurais une clé de compréhension ? Ton certificat est valide pour truc.domaine.fr, hors ce nom renvoi l'ip publique de ta box, même dans ton réseau interne Avec un serveur DNS interne, tu vas pouvoir indiquer, uniquement aux clients internes, que truc.domaine.fr a pour ip l'adresse privée de ton nas. ps : les autres méthodes (pki, loopback, hosts, quickconnect, ...) sont plus complexes, plus lentes et moins fiables 0 Citer
mlelorra Posté(e) le 6 août 2017 Auteur Posté(e) le 6 août 2017 Le 05/08/2017 à 18:38, Fenrir a dit : Avec un serveur DNS interne, tu vas pouvoir indiquer, uniquement aux clients internes, que truc.domaine.fr a pour ip l'adresse privée de ton nas. Ok, Quel paramètre dois-je mettre pour que le DNS réponde truc.domaine.fr avec l'adresse privée de mon nas, seulement aux clients internes ? selon l'IP, je suppose ? mais à quel endroit je paramètre ça ? dans DNS server ? avec les zones ? les vues ? autre ? 0 Citer
Fenrir Posté(e) le 6 août 2017 Posté(e) le 6 août 2017 Regarde le tuto DNS Server, tout y est expliqué en détails (normalement tu as juste besoin de l'étape 2, Zone DNS locale). 0 Citer
mlelorra Posté(e) le 6 août 2017 Auteur Posté(e) le 6 août 2017 (modifié) j'ai regardé (pour faire l''étape 1, notamment) mais sans succès pour l'instant. Je ne comprends pas vraiment... donc... je suis les indications un peu à l'aveugle et même si je n'ai pas de blocage, ça ne semble pas fonctionner comme cela devrait Modifié le 6 août 2017 par mlelorra 0 Citer
mlelorra Posté(e) le 15 août 2017 Auteur Posté(e) le 15 août 2017 ... bon et bien après qq heures / jours à chercher, je n'ai pas réussi à appliquer l'étape 2 :( En tout cas, je n'ai pas le comportement recherché car quand je fais https://adresse_locale_de_mon_nas, j'ai toujours l'erreur demandant validation du certificat Une aide substantielle ? 0 Citer
Fenrir Posté(e) le 15 août 2017 Posté(e) le 15 août 2017 Il y a 5 heures, mlelorra a dit : https://adresse_locale_de_mon_nas, j'ai toujours l'erreur demandant validation du certificat C'est normal, ton certificat est valide pour https://nom.de.domaine, pas pour une IP. Si je t'ai indiqué de suivre le tuto DNS c'est pour faire en sorte qu'en local, nom.de.domaine renvoi sur l'ip privée du nas, de la même manière que depuis Internet nom.de.domaine renvoi sur l'ip publique de ta box. 0 Citer
mlelorra Posté(e) le 15 août 2017 Auteur Posté(e) le 15 août 2017 Ok. Et donc ça ne couvrira pas mon besoin initial qui est de ne plus avoir d'erreur de type certificat quand je veux accéder à mon NAS localement via l'adresse IP :s 0 Citer
Fenrir Posté(e) le 15 août 2017 Posté(e) le 15 août 2017 Non, mais ça te permettra d'accéder à ton nas en LAN avec un certificat valide et sans message d'erreur si tu utilises son nom de domaine. Si tu tiens vraiment à ne pas avoir de message d'erreur en te connectant en https avec l'adresse IP, tu n'as qu'une seule et unique solution (c'est ce que permet le script de mon premier post) : créer ton autorité de certification installe la dans tous les navigateurs que tu utilises créé un certificat avec l'adresse IP + le nom de domaine et fait le signer par ton autorité 0 Citer
mlelorra Posté(e) le 15 août 2017 Auteur Posté(e) le 15 août 2017 Ahh oui, c'est bien plus complexe ! en tout cas, merci pour ton aide ps: ai je absolument besoin du serveur DNS pour accéder "correctement" au NAS en LAN avec un certificat valide et sans message d'erreur (si j'utilise son nom de domaine) ? j'avais l'impression que cela fonctionnait sans 0 Citer
Mic13710 Posté(e) le 15 août 2017 Posté(e) le 15 août 2017 il y a 12 minutes, Fenrir a dit : Si tu tiens vraiment à ne pas avoir de message d'erreur en te connectant en https avec l'adresse IP, tu n'as qu'une seule et unique solution (c'est ce que permet le script de mon premier post) : Oui mais à quoi bon se compliquer la vie alors qu'en utilisant la même url ça fonctionne nickel ! 0 Citer
Fenrir Posté(e) le 15 août 2017 Posté(e) le 15 août 2017 il y a 20 minutes, mlelorra a dit : ps: ai je absolument besoin du serveur DNS pour accéder "correctement" au NAS en LAN avec un certificat valide et sans message d'erreur (si j'utilise son nom de domaine) ? j'avais l'impression que cela fonctionnait sans Non, si ta box gère le loopback ou que tu utilises QuickConnect ça peut fonctionner, ça sera juste plus lent et ça ne fonctionnera pas toujours @Mic13710 : il préfère peut être se compliquer la vie 0 Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.