ওপেনভিপিএন ইজি-আরএসএ বিল্ড-কী অটোমেশন?


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

আমি এটি চেষ্টা করেছিলাম, তবে সাধারণ নামটি ছিল সার্ভারের ঠিকানা, আমি যে নামটি উত্পন্ন করতে চাইছিলাম তার নাম নয়, যেমনটি
— ডেভিড পক্সন

আমার জন্য এটি উত্থাপিত প্রশ্নের উত্তর is বেশিরভাগ মানক কনফিগারেশনের জন্য কী উত্পাদনটি স্বয়ংক্রিয় করতে এবং এটি উত্তর হিসাবে গ্রহণ করার পরামর্শ দেয়।
— জেমস ফিথ

2

আমার মনে যে বিষয়টি দ্রুত আসে তা হ'ল expect; এটি আপনাকে এই জাতীয় কমান্ড লাইনের ইন্টারঅ্যাকশনগুলিকে স্বয়ংক্রিয় করতে দেয়।


3
প্রত্যাশা এই জন্য উপায় ওভারকিল; ইজি-আরএসএ হ'ল সমস্ত শেল স্ক্রিপ্ট, তাই সহজে হ্যাকযোগ্য।
— pjz

2

ইজিআরএসএর নতুন সংস্করণ এখনই একক বাইনারি হিসাবে আসে। ক্লায়েন্ট কী তৈরি করতে স্বয়ংক্রিয় করতে, আপনি এখন "ভার্স" ফাইলটি ব্যবহার করতে পারেন (এটি কেবল ইডেরসা বাইনারি হিসাবে একই ডিরেক্টরিতে রেখে দিন):

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

আমারও একই সমস্যা ছিল।

আমি যে সমাধানটি পেয়েছি তা হ'ল:

প্রতিধ্বনি -en "\ n \ n \ n \ n \ n \ n \ n \ ny \ ny \ n" | ./ বিল্ডকি-ক্লায়েন্ট 1


এটি আমার পক্ষে কাজ করেছে। আমি এটি সবচেয়ে পছন্দ করি কারণ এর জন্য স্ক্রিপ্টটি ব্যবহারকারীর প্রয়োজন হয় না।
— এএফপি_৫৫৫

1

এটি আমার ব্যবহারের মতো। আশা করি এটি কাউকে সহায়তা করে, এটি বের করতে আমার কয়েক ঘন্টা সময় লেগেছে। নিশ্চিত করুন যে আপনি ডিরেক্টরিটি ইজি-আরএসএ তে চালাচ্ছেন, এবং উত্স। /Vvs এ ভুলে যাবেন না

(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

আমি পিজেজেডের মতো একটি মোড়ক তৈরি করেছি, তবে সমস্ত প্রয়োজনীয় ফাইলকে একক .ovpn ফাইলে বান্ডিল করে, যা সরাসরি ব্যবহার করা যায়

#! / বিন / ব্যাশ
সিডি /etc/openvpn/easy-rsa/2.0
ক্লায়েন্ট = $ 1

যদি [x $ ক্লায়েন্ট = এক্স]; তারপর
    প্রতিধ্বনি "ব্যবহার: client 0 ক্লায়েন্টের নাম"
    প্রস্থান 1
ফাই

যদি [! -e কী / $ ক্লায়েন্ট.কি]; তারপর
    "উত্পন্ন কী ..." প্রতিধ্বনি
    । Vars
    ./pkitool $ ক্লায়েন্ট
    প্রতিধ্বনি "... কী উত্পন্ন হয়েছে।"
ফাই

বান্ডিল =। / কী / $ client.ovpn

যদি [! -e $ বান্ডিল]; তারপর
    প্রতিধ্বনি "বান্ডিল তৈরি করা হচ্ছে ..."
    বিড়াল কী / টেম্পলেট.ওভিএনএন >> nd বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    বিড়াল কী / ca.crt >> nd বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    awk '/ BEGIN সার্টিফিকেট /, 0' কী / $ ক্লায়েন্ট.crt >> >> বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    বিড়াল কী / $ ক্লায়েন্ট.কি >> $ বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    প্রতিধ্বনি '' >> $ বান্ডিল
    প্রতিধ্বনি "... বান্ডেল তৈরি করা হয়েছে"
আর
    প্রতিধ্বনি "কিছুই করার নেই, তাই কিছুই করা হয়নি। (কী / $ ক্লায়েন্ট.ওএনপিএন ইতিমধ্যে বিদ্যমান)"
ফাই

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"


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.