| 598 | | === 3 certnode === |
| 599 | | Voor het functioneren van openvpn waaronder beveiligen en herkennen van server en unieke clients word easy-rsa gebruikt. Het idee is om op een vertrouwde permanente machine "certnode" een permanente opzet te maken waar een openvpn server certificate voor de radius-server/proxy word aangemaakt, dat weer de basis zal vormen voor client certificaten voor de verschillende accesspoints. Het eerste gebeurt eenmalig en zal lokaal op de certnode bewaart moeten blijven, het tweede gebeurt per op te leveren unieke AP waar er meerdere van zullen zijn. Het server certificaat + openvpn settings zal eenmalig van de certnode op de radius-server/proxy geplaatst worden. De unieke client certificaten worden "per AP" eenmalig op de certnode aangemaakt en vervolgens eenmalig per uniek AP geflashed! Hierdoor zijn de AP's individueel te volgen en te beheren om toegang tot the radius-server/proxy te ontzeggen. |
| 600 | | |
| 601 | | Kan inloggen via public ssh key op sunny/sunfire.wleiden.net kan daarinderdaad het script starten maar vervolgens kan deze niks vinden. Lijkt erop dat de oude server certificaten niet aanwezig zijn en er kunnen dan geen afgeleide client certifcaten gemaakt worden tevens missen er config bestanden, dus alles moet opnieuw? Hoe maak ik dit lokaal na? |
| 602 | | Namaken: https://help.ubuntu.com/community/OpenVPN |
| 603 | | Een easyrsa "server" certificate aanmaken, in de handleiding i.p.v. "admin" group die ontbreekt "sudo" kiezen. Tevens locatie van het cn bestand fixen met symlink! |
| 604 | | Daarna kan je easyrsa "client" certificate aanmaken, enige opmerking daar is dat je KEY_CN=client voor het commando plaatst anders database error. Nu in de oude trend kun je het eduroam-cert script aanpassen en benodigde (geupdate)config bestanden in map key's plaatsen en daarin een map met packages aanmaken. Wanneer je dan het script draait maakt die inderdaad een tar bestand met alle instellingen. |
| 605 | | TODO Verzin leuke manier om dit in een batch workflow voor veel AP's clients in te passen... denken we vanuit dit concept met tar bestand of moeten we iets maken dat meteen meedere parameters zoals multiSSID ip-adres hostname wifichannel etc meeneemt op basis van MAC adres? Nog uitzoeken welk deel er naar de server moet 4 bestanden ca dh1024 server.crt/key? |
| 606 | | |
| 607 | | #/etc/openvpn/easy-rsa/keys/client.conf |
| | 593 | === 3 setup certnode === |
| | 594 | Voor het functioneren van openvpn waaronder beveiligen en herkennen van server en unieke clients word easy-rsa gebruikt. Het idee is om op een vertrouwde permanente machine "certnode" eenmalig een blijvende opzet te maken met een openvpn "server" certificate voor de "radius-server/proxy", waarvan weer afgeleide client certificaten voor de verschillende accesspoints gemaakt kan worden. Het eerste gebeurt eenmalig en zal lokaal op de certnode bewaart moeten blijven. Het tweede gebeurt iedere keer wanneer er een "eduroam" AP bij komt aan het WirelessLeiden netwerk. Het generieke server certificaat + openvpn settings zal eenmalig van de certnode op de radius-server/proxy geplaatst moeten worden. De unieke client certificaten en config moeten voor ieder nieuwe/extra "eduroam" AP apart op de certnode aangemaakt worden en eenmalig per uniek AP geconfigureerd! Hierdoor zijn de eduroam AP's individueel te volgen en te beheren om toegang tot the radius-server/proxy te ontzeggen. |
| | 595 | |
| | 596 | ==== 3.1 install openvpn easy-rsa ==== |
| | 597 | Op een ubuntu 12.04LTS installatie of livecd moet je het easy-rsa pakket dat met "openvpn" komt installeren. Opmerking, houd er rekening mee dat wanneer dit op een livecd gedraait word natuurlijk het permanente karakter verloren gaat! De inhoud van de /etc/openvpn map moet dan natuurlijk bewaard worden anders zal er per livecd sessie, opnieuw server certificaten gegenereerd moeten worden waardoor de afgeleide client certificaten en key's met de server certifcaten uit eerdere/oudere livecd sessie natuurlijk incompatible zijn! TODO Wellicht komt er een aanpassing van dit script zodat die direct voor verschillende users op sunfire zelf functioneert! |
| | 598 | |
| | 599 | Setup openvpn easy-rsa certnode |
| | 600 | {{{ |
| | 601 | ## install openvpn in ubuntu 12.04 |
| | 602 | sudo apt-get install openvpn |
| | 603 | |
| | 604 | ## copy easy-rsa files for use |
| | 605 | sudo mkdir -p /etc/openvpn/easy-rsa/keys/packages |
| | 606 | sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ |
| | 607 | |
| | 608 | ## setup openvpn easy-rsa "server" |
| | 609 | # edit the end of the vars file to reflect the example code |
| | 610 | sudo nano /etc/openvpn/easy-rsa/vars |
| | 611 | }}} |
| | 612 | |
| | 613 | #example code#/etc/openvpn/easy-rsa/vars |
| | 614 | {{{ |
| | 615 | export KEY_COUNTRY="NL" |
| | 616 | export KEY_PROVINCE="ZH" |
| | 617 | export KEY_CITY="Leiden" |
| | 618 | export KEY_ORG="Stichting Wireless Leiden" |
| | 619 | export KEY_EMAIL="$me@wirelessleiden.nl" |
| | 620 | }}} |
| | 621 | |
| | 622 | Continue setup |
| | 623 | {{{ |
| | 624 | ## continue setup openvpn easy-rsa "server" |
| | 625 | cd /etc/openvpn/easy-rsa/ |
| | 626 | sudo chown -R root:sudo |
| | 627 | sudo chmod g+w . #include the dot "." |
| | 628 | source ./vars |
| | 629 | ./clean-all |
| | 630 | ./build-dh |
| | 631 | sudo ln -s openssl-1.0.0.cnf openssl.cnf |
| | 632 | ./pkitool --initca |
| | 633 | ./pkitool --server $servername/eduradprox |
| | 634 | |
| | 635 | ## create and copy server keys for usage |
| | 636 | cd keys |
| | 637 | openvpn --genkey --secret ta.key #tls key goed genoeg??? |
| | 638 | sudo cp eduradprox.crt eduradprox.key ca.crt dh1024.pem ta.key ../../ #kopieer ze natuurlijk naar de radius-server/proxy die instap 2 gemaakt is! |
| | 639 | |
| | 640 | ## setup script for easy client certificate/key genereting individuel AP's |
| | 641 | sudo touch /usr/local/bin/eduroam-openvpn-client-cert |
| | 642 | }}} |
| | 643 | |
| | 644 | #example code#/usr/local/bin/eduroam-client-openvpn-cert |
| | 645 | {{{ |
| | 646 | #!/bin/sh |
| | 647 | # put me in /usr/local/bin |
| | 648 | # use me as sudo me apname |
| | 649 | |
| | 650 | FROMBASE=./keys |
| | 651 | TOBASE=./keys/packages |
| | 652 | COMMON=$1 |
| | 653 | TAR=$TOBASE/$COMMON.tar |
| | 654 | USER=$SUDO_USER |
| | 655 | CLIENT=client |
| | 656 | |
| | 657 | if [ ! $1 ]; then |
| | 658 | echo "no name for AP given" |
| | 659 | exit 1 |
| | 660 | fi |
| | 661 | |
| | 662 | if [ ! -f $TAR ]; then |
| | 663 | |
| | 664 | cd /etc/openvpn/easy-rsa |
| | 665 | |
| | 666 | . ./vars |
| | 667 | KEY_CN=$COMMON ./pkitool $COMMON |
| | 668 | |
| | 669 | mv $FROMBASE/$COMMON.key $FROMBASE/$CLIENT.key |
| | 670 | mv $FROMBASE/$COMMON.crt $FROMBASE/$CLIENT.crt |
| | 671 | |
| | 672 | tar -cf $TAR \ |
| | 673 | $FROMBASE/ca.crt \ |
| | 674 | $FROMBASE/$CLIENT.key \ |
| | 675 | $FROMBASE/$CLIENT.crt \ |
| | 676 | $FROMBASE/client.conf \ |
| | 677 | $FROMBASE/up.sh |
| | 678 | |
| | 679 | cp $TAR /home/$USER/$COMMON.tar |
| | 680 | chown $USER /home/$USER/$COMMON.tar |
| | 681 | |
| | 682 | else |
| | 683 | |
| | 684 | echo "$TAR was already created" |
| | 685 | exit 1 |
| | 686 | |
| | 687 | fi |
| | 688 | }}} |
| | 689 | |
| | 690 | Continue setup |
| | 691 | {{{ |
| | 692 | ## flag executable |
| | 693 | sudo chmod +x /usr/local/bin/eduroam-client-openvpn-cert |
| | 694 | |
| | 695 | ## fix /etc/openvpn/easy-rsa-/keys/packages permissions? |
| | 696 | |
| | 697 | ## setup openvpn client config see example |
| | 698 | sudo touch /etc/openvpn/easy-rsa/keys/client.conf |
| | 699 | }}} |
| | 700 | |
| | 701 | #example code#/etc/openvpn/easy-rsa/keys/client.conf |
| 623 | | keepalive 10 180 #! these settings keep the tunnel alive on the W.L. network<--- |
| 624 | | }}} |
| 625 | | |
| 626 | | # /usr/local/bin/eduroam-client-openvpn-cert |
| 627 | | {{{ |
| 628 | | #!/bin/sh |
| 629 | | |
| 630 | | # put me in /usr/local/bin |
| 631 | | |
| 632 | | FROMBASE=./keys |
| 633 | | TOBASE=./keys/packages |
| 634 | | COMMON=$1 |
| 635 | | TAR=$TOBASE/$COMMON.tar |
| 636 | | USER=$SUDO_USER |
| 637 | | CLIENT=client |
| 638 | | |
| 639 | | if [ ! $1 ]; then |
| 640 | | echo "no common name given" |
| 641 | | exit 1 |
| 642 | | fi |
| 643 | | |
| 644 | | if [ ! -f $TAR ]; then |
| 645 | | |
| 646 | | cd /etc/openvpn/easy-rsa |
| 647 | | |
| 648 | | . ./vars |
| 649 | | KEY_CN=$COMMON ./pkitool $COMMON |
| 650 | | |
| 651 | | mv $FROMBASE/$COMMON.key $FROMBASE/$CLIENT.key |
| 652 | | mv $FROMBASE/$COMMON.crt $FROMBASE/$CLIENT.crt |
| 653 | | |
| 654 | | tar -cf $TAR \ |
| 655 | | $FROMBASE/ca.crt \ |
| 656 | | $FROMBASE/$CLIENT.key \ |
| 657 | | $FROMBASE/$CLIENT.crt \ |
| 658 | | $FROMBASE/client.conf \ |
| 659 | | $FROMBASE/up.sh |
| 660 | | |
| 661 | | cp $TAR /home/$USER/$COMMON.tar |
| 662 | | chown $USER /home/$USER/$COMMON.tar |
| 663 | | |
| 664 | | else |
| 665 | | |
| 666 | | echo "$TAR was already created" |
| 667 | | exit 1 |
| 668 | | |
| 669 | | fi |
| 670 | | }}} |
| 671 | | |
| | 717 | keepalive 10 180 #! these settings keep the tunnel alive on the W.L. network <--- |
| | 718 | }}} |
| | 719 | |
| | 720 | ==== 3.2 certnode client ==== |
| | 721 | The permanent and single setup instance for the openvpn "certnode" is done! When adding new/extra "eduroam" AP's to the network, generate a *.tar with unique set of keys/config for each AP with the following command, it ends up in the ~/ user home folder! |
| | 722 | {{{ |
| | 723 | ## replace $unique-ap-name with the name of your AP |
| | 724 | sudo /usr/local/bin/eduroam-client-openvpn-cert $unique-ap-name |
| | 725 | }}} |