OpenVPN आसान- rsa बिल्ड-कुंजी स्वचालन?


18

मेरे पास अपने क्लाइंट वीपीएन सर्वर के लिए उत्पन्न करने के लिए बहुत सी चाबियां हैं। जब भी मैं इस तरह की चाबियाँ बनाने के लिए आसान-आरएसए का उपयोग करता हूं:

./build-key client1

सवालों की एक श्रृंखला के साथ कुछ आउटपुट है। सभी प्रश्नों के डिफ़ॉल्ट उत्तर हैं जो varsफ़ाइल में परिभाषित हैं ।

Generating a 1024 bit RSA private key
............................................++++++
.......................++++++
writing new private key to 'client1.key'
-----
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) [US]:
State or Province Name (full name) [CO]:
Locality Name (eg, city) [Denver]:
Organization Name (eg, company) [mycompany]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client1]:
Email Address [it@mycompany.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from /etc/openvpn/easy-rsa/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'US'
stateOrProvinceName   :PRINTABLE:'CO'
localityName          :PRINTABLE:'Denver'
organizationName      :PRINTABLE:'mycompany'
commonName            :PRINTABLE:'client1'
emailAddress          :IA5STRING:'it@mycompany.com'
Certificate is to be certified until Jan  3 20:16:04 2038 GMT (9999 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

सभी सभी में, मुझे निम्नलिखित कुंजियों को मैन्युअल रूप से दबाना होगा:

ENTER
ENTER
ENTER
ENTER
ENTER
ENTER
ENTER
ENTER
y
ENTER
y
ENTER

मूल रूप से मैं सभी डिफ़ॉल्ट उत्तरों को स्वीकार कर रहा हूं और अंतिम दो प्रश्नों के लिए 'हां' कह रहा हूं। वहाँ किसी भी कर रहे हैं -forceया -quietझंडे या कुछ है कि मैं के साथ उपयोग कर सकते हैं build-key? यदि नहीं, तो क्या स्क्रिप्टिंग या बैश ट्रिक्स हैं जिनका उपयोग मैं सिर्फ हर बार कर सकता हूं? मैं इसके बारे में किसी भी आदमी पृष्ठों में कुछ भी नहीं मिल सकता है।

जवाबों:


14

यदि आप के स्रोत को देखें build-key, तो आप पाएंगे कि यह कॉलिंग है pkitool। मैंने साइलेंट की कीज़ को बंडल करने के लिए एक रैपर लिखा और एक ओपनबॉल फाइल को एक टारबॉल में कॉन्फ़िगर किया, जिसे मैं अपने उपयोगकर्ताओं को दे सकता था:

#!/bin/bash

client=$1

if [ x$client = x ]; then
    echo "Usage: $0 clientname"
    exit 1
fi

if [ ! -e keys/$client.key ]; then
    echo "Generating keys..."
    . vars
    ./pkitool $client
    echo "...keys generated." 
fi

tarball=./keys/$client.tgz

if [ ! -e $tarball ]; then
    echo "Creating tarball..."
    tmpdir=/tmp/client-tar.$$
    mkdir $tmpdir
    cp company.ovpn $tmpdir/company.ovpn
    cp keys/ca.crt $tmpdir 
    cp keys/$client.key $tmpdir/client.key
    cp keys/$client.crt $tmpdir/client.crt
    tar -C $tmpdir -czvf $tarball .
    rm -rf $tmpdir
    echo "...tarball created" 
else
    echo "Nothing to do, so nothing done. (keys/$client.tgz already exists)" 
fi

19

कोशिश - बैच झंडा

./build-key --batch client1

मैंने यह कोशिश की, लेकिन सामान्य नाम सर्वर का पता था, न कि वे जिसका नाम मैं उत्पन्न करना चाहता था, जैसा कि --बैच फ्लैग के बिना व्यवहार है
डेविड पॉक्सन

मेरे लिए यह प्रश्न का उत्तर है। यह है कि अधिकांश मानक विन्यासों के लिए मुख्य उत्पादन को कैसे स्वचालित किया जाए और इसे उत्तर के रूप में स्वीकार करने का सुझाव दिया जाए।
जेम्स फर्थ

2

जो बात मेरे दिमाग में आती है वह सबसे तेज है expect; यह आपको कमांड लाइन इंटरैक्शन के इन प्रकारों को स्वचालित करने की अनुमति देता है।


3
उम्मीद है कि इस तरह से ओवरकिल हो; easy-rsa सभी शेल स्क्रिप्ट है, इसलिए आसानी से हैक करने योग्य है।
17

2

ईज़ीआरएसए का नया संस्करण अभी सिंगल बाइनरी के रूप में आता है। क्लाइंट कुंजी के निर्माण को स्वचालित करने के लिए, आप अब "vars" फ़ाइल का उपयोग कर सकते हैं (बस इसे उसी निर्देशिका में रखें जहाँ आसान बाइनरी है):

if [ -z "$EASYRSA_CALLER" ]; then
    echo "You appear to be sourcing an Easy-RSA 'vars' file." >&2
    echo "This is no longer necessary and is disallowed. See the section called" >&2
    echo "'How to use this file' near the top comments for more details." >&2
    return 1
fi

set_var EASYRSA        "$PWD"
set_var EASYRSA_OPENSSL        "openssl"
set_var EASYRSA_PKI            "$EASYRSA/pki"
set_var EASYRSA_DN     "org"

set_var EASYRSA_REQ_COUNTRY    "Country"
set_var EASYRSA_REQ_PROVINCE   "Province"
set_var EASYRSA_REQ_CITY       "City"
set_var EASYRSA_REQ_ORG        "Org Ltd"
set_var EASYRSA_REQ_EMAIL      "vpn@example.com"
set_var EASYRSA_REQ_OU         "Infrastructure"

set_var EASYRSA_KEY_SIZE       2048

set_var EASYRSA_ALGO           rsa

set_var EASYRSA_CA_EXPIRE      3650
set_var EASYRSA_CERT_EXPIRE    365
set_var EASYRSA_CRL_DAYS       180

set_var EASYRSA_TEMP_FILE      "$EASYRSA_PKI/extensions.temp"

और EasyRSA के बाइनरी का उपयोग करें:

./easyrsa build-client-full client1 nopass

1

मुझे भी यही समस्या थी।

मुझे जो समाधान मिला वह था:

echo -en "\ n \ n \ n \ n \ n \ n \ n \ n \ ny \ n" | ./build-key client1


इसने मेरे लिए काम किया। मुझे यह सबसे ज्यादा पसंद है क्योंकि इसे स्क्रिप्ट को समझने के लिए उपयोगकर्ता की आवश्यकता नहीं है।
AFP_555

1

यह मेरे उपयोग के समान है। आशा है कि यह किसी की मदद करता है, यह पता लगाने में मुझे घंटों लग गए। सुनिश्चित करें कि आप निर्देशिका आसान-आरएएसए में निष्पादित कर रहे हैं, और स्रोत को मत भूलना ।/vars

(echo -en "\n\n\n\n\n\n\n\n"; sleep 1; echo -en "\n"; sleep 1; echo -en "\n"; sleep 3; echo -en "yes"; echo -en "\n"; sleep 3; echo -en "yes"; echo -en "\n") | ./build-key $key_id 

0

मैंने pjz की तरह एक आवरण बनाया, लेकिन सभी आवश्यक फाइलों को एकल .ovpn फ़ाइल में बाँधने के साथ, जिसे सीधे इस्तेमाल किया जा सकता है

#! / Bin / bash
cd /etc/openvpn/easy-rsa/2.0
ग्राहक = $ 1

अगर [x $ ग्राहक = x]; फिर
    इको "उपयोग: $ 0 क्लाइंटनाम"
    बाहर निकलें 1
फाई

अगर [ ! -e चाबियाँ / $ client.key]; फिर
    गूंज "चाबियाँ पैदा कर रहा है ..."
    । वार्स
    ./pkitool $ ग्राहक
    गूंज "... चाबियाँ उत्पन्न।"
फाई

बंडल =। / कुंजी / $ client.ovpn

अगर [ ! -य $ बंडल]; फिर
    गूंज "बंडल बनाना ..."
    बिल्ली की चाबी / टेम्पलेट .ovpn >> $ बंडल
    गूंज '' >> $ बंडल
    बिल्ली की चाबी / ca.crt >> $ बंडल
    गूंज '' >> $ बंडल
    गूंज '' >> $ बंडल
    गूंज '' >> $ बंडल
    awk '/ BEGIN CERTIFICATE /, 0' कुंजियाँ / $ client.crt >> $ बंडल
    गूंज '' >> $ बंडल
    गूंज '' >> $ बंडल
    गूंज '' >> $ बंडल
    बिल्ली की चाबी / $ client.key >> $ बंडल
    गूंज '' >> $ बंडल
    गूंज '' >> $ बंडल
    गूंज "... बंडल बनाया"
अन्य
    गूंज "कुछ नहीं करना है, तो कुछ भी नहीं किया। (चाबियाँ / $ client.ovpn पहले से मौजूद है)"
फाई

0

मैंने बस यही काम करने की कोशिश की है, ओपनबीएसपी उपयोगकर्ताओं को फ्रीबीएसडी बॉक्स पर चुपचाप पैदा करता है।

इसके परिणामस्वरूप एक नई फ़ाइल बनाई गई, जिसे उपयुक्त नाम दिया गया ./build-key-quiet

#!/bin/sh

# Make a certificate/private key pair using a locally generated
# root certificate.
# JP - automating my time away

cd /root/openvpn

client=$1

if [ x$client = x ];
    then
    echo "Usage: $0 clientname"
    exit 1
fi

if [ ! -e keys/$client.key ];
  then
    echo "Generating keys..."
    . ./vars
    ./pkitool $client
    echo "Great Success ...keys generated."
fi

echo 'Generating ovpn Files'
cd /root/clients
./make-client-config.sh $client
rm -rf /tmp/*.ovpn
cp /root/clients/files/$client.ovpn /tmp/
chmod 777 /root/clients/files/*.ovpn

echo "cleaning up /tmp/ of old ovpn files..."
echo "OVPN file generated and copied into /tmp/$client.ovpn"


-2

बस बिल्ड-की फ़ाइल को संपादित करें, और --interactमेरे द्वारा ज्ञात सबसे आसान विधि के विकल्प को हटा दें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.