@@ -98,11 +98,14 @@ cmd_help() {
98
98
Creates a new CA"
99
99
100
100
opts="
101
+ * raw-ca - ONLY use SSL binary to input CA password
102
+ raw (Equivalent to global option '--raw-ca')
103
+
101
104
* nopass - Do not encrypt the private key (default is encrypted)
102
105
(Equivalent to global option '--nopass|--no-pass')
106
+
103
107
* subca - Create an intermediate CA keypair and request
104
- (default is a root CA)
105
- * intca - Alias to the above"
108
+ intca (default is a root CA)"
106
109
;;
107
110
gen-dh)
108
111
text="
@@ -470,7 +473,7 @@ General options:
470
473
Can not be used with --passin or --passout
471
474
--passin=ARG : Set -passin ARG for openssl (eg: pass:xEasyRSAy)
472
475
--passout=ARG : Set -passout ARG for openssl (eg: pass:xEasyRSAy)
473
- --ca-via-stdin : Build CA with password via 'stdin' (New method)
476
+ --raw-ca : Build CA with password via RAW SSL input
474
477
475
478
--vars=FILE : Define a specific 'vars' file to use for Easy-RSA config
476
479
(Default vars file is in the EasyRSA PKI directory)
@@ -1356,7 +1359,7 @@ install_data_to_pki() {
1356
1359
1357
1360
# Short circuit for x509-types-only
1358
1361
if [ "$context" = x509-types-only ]; then
1359
- verbose "install_data_to_pki x509-types-only COMPLETED"
1362
+ verbose "install_data_to_pki: x509-types-only COMPLETED"
1360
1363
return
1361
1364
fi
1362
1365
@@ -1461,6 +1464,7 @@ build_ca() {
1461
1464
nopass)
1462
1465
[ "$prohibit_no_pass" ] || EASYRSA_NO_PASS=1
1463
1466
;;
1467
+ raw-ca|raw) EASYRSA_RAW_CA=1 ;;
1464
1468
*) warn "Ignoring unknown command option: '$1'"
1465
1469
esac
1466
1470
shift
@@ -1481,11 +1485,17 @@ build_ca() {
1481
1485
x509=1
1482
1486
fi
1483
1487
1484
- # If encrypted then create the CA key with AES256 cipher
1485
- if [ "$EASYRSA_NO_PASS" ]; then
1486
- unset -v cipher
1488
+ # RAW mode must take priority
1489
+ if [ "$EASYRSA_RAW_CA" ]; then
1490
+ unset -v EASYRSA_NO_PASS EASYRSA_PASSOUT EASYRSA_PASSIN
1491
+ verbose "build-ca: CA password RAW method"
1487
1492
else
1488
- unset -v no_password
1493
+ # If encrypted then create the CA key with AES256 cipher
1494
+ if [ "$EASYRSA_NO_PASS" ]; then
1495
+ unset -v cipher
1496
+ else
1497
+ unset -v no_password
1498
+ fi
1489
1499
fi
1490
1500
1491
1501
# Test for existing CA, and complain if already present
@@ -1573,9 +1583,21 @@ to the latest Easy-RSA release."
1573
1583
die "build_ca - easyrsa_mktemp out_file_tmp"
1574
1584
1575
1585
# Get passphrase from user if necessary
1576
- unset -v CA_key_pass
1586
+ if [ "$EASYRSA_RAW_CA" ]
1587
+ then
1588
+ # Passphrase will be provided
1589
+ confirm "
1590
+ Accept ? " yes "\
1591
+ Raw CA mode
1592
+ ===========
1593
+
1594
+ CA password must be input THREE times:
1577
1595
1578
- if [ "$EASYRSA_NO_PASS" ]
1596
+ 1. Set the password.
1597
+ 2. Confirm the password.
1598
+ 3. Use the password. (Create the Root CA)"
1599
+
1600
+ elif [ "$EASYRSA_NO_PASS" ]
1579
1601
then
1580
1602
: # No passphrase required
1581
1603
@@ -1601,32 +1623,17 @@ to the latest Easy-RSA release."
1601
1623
1602
1624
# Validate passphrase
1603
1625
if [ "$p" ] && [ "$p" = "$q" ]; then
1604
- if [ "$EASYRSA_CA_PASS_NEW" ]; then
1605
- # CA password via stdin
1606
- CA_key_pass="$p"
1607
-
1608
- # To use stdin for -passin and -passout
1609
- # MUST use -batch
1610
- ssl_batch=1
1611
-
1612
- # Helpful info, in case of failure
1613
- error_info="\
1614
- EasyRSA 'build-ca' has failed due to use of OpenSSL password
1615
- argument 'stdin'. Please report this error to EasyRSA."
1616
-
1617
- else
1618
- # CA password via temp-files
1619
- in_key_pass_tmp=""
1620
- easyrsa_mktemp in_key_pass_tmp || \
1621
- die "build_ca - in_key_pass_tmp"
1622
- out_key_pass_tmp=""
1623
- easyrsa_mktemp out_key_pass_tmp || \
1624
- die "build_ca - out_key_pass_tmp"
1625
- printf "%s" "$p" > "$in_key_pass_tmp" || \
1626
- die "in_key_pass_tmp: write"
1627
- printf "%s" "$p" > "$out_key_pass_tmp" || \
1628
- die "out_key_pass_tmp: write"
1629
- fi
1626
+ # CA password via temp-files
1627
+ in_key_pass_tmp=""
1628
+ easyrsa_mktemp in_key_pass_tmp || \
1629
+ die "build_ca - in_key_pass_tmp"
1630
+ out_key_pass_tmp=""
1631
+ easyrsa_mktemp out_key_pass_tmp || \
1632
+ die "build_ca - out_key_pass_tmp"
1633
+ printf "%s" "$p" > "$in_key_pass_tmp" || \
1634
+ die "in_key_pass_tmp: write"
1635
+ printf "%s" "$p" > "$out_key_pass_tmp" || \
1636
+ die "out_key_pass_tmp: write"
1630
1637
unset -v p q
1631
1638
else
1632
1639
unset -v p q
@@ -1659,19 +1666,15 @@ to the latest Easy-RSA release."
1659
1666
EASYRSA_SSL_CONF="$conf_tmp"
1660
1667
1661
1668
# Generate CA Key
1662
- if [ "$EASYRSA_CA_PASS_NEW " ]; then
1669
+ if [ "$EASYRSA_RAW_CA " ]; then
1663
1670
case "$EASYRSA_ALGO" in
1664
1671
rsa)
1665
1672
if easyrsa_openssl genpkey \
1666
1673
-algorithm "$EASYRSA_ALGO" \
1667
1674
-pkeyopt \
1668
1675
rsa_keygen_bits:"$EASYRSA_ALGO_PARAMS" \
1669
1676
-out "$out_key_tmp" \
1670
- ${cipher:+ "$cipher"} \
1671
- -pass stdin \
1672
- <<-EOF
1673
- ${CA_key_pass}
1674
- EOF
1677
+ ${cipher:+ "$cipher"}
1675
1678
then
1676
1679
: # ok
1677
1680
else
@@ -1682,11 +1685,7 @@ to the latest Easy-RSA release."
1682
1685
if easyrsa_openssl genpkey \
1683
1686
-paramfile "$EASYRSA_ALGO_PARAMS" \
1684
1687
-out "$out_key_tmp" \
1685
- ${cipher:+ "$cipher"} \
1686
- -pass stdin \
1687
- <<-EOF
1688
- ${CA_key_pass}
1689
- EOF
1688
+ ${cipher:+ "$cipher"}
1690
1689
then
1691
1690
: # ok
1692
1691
else
@@ -1697,11 +1696,7 @@ to the latest Easy-RSA release."
1697
1696
if easyrsa_openssl genpkey \
1698
1697
-algorithm "$EASYRSA_CURVE" \
1699
1698
-out "$out_key_tmp" \
1700
- ${cipher:+ "$cipher"} \
1701
- -pass stdin \
1702
- <<-EOF
1703
- ${CA_key_pass}
1704
- EOF
1699
+ ${cipher:+ "$cipher"}
1705
1700
then
1706
1701
: # ok
1707
1702
else
@@ -1712,7 +1707,7 @@ to the latest Easy-RSA release."
1712
1707
esac
1713
1708
1714
1709
verbose "\
1715
- build_ca: CA key password created via stdin "
1710
+ build_ca: CA key password created via RAW "
1716
1711
1717
1712
else
1718
1713
case "$EASYRSA_ALGO" in
@@ -1751,18 +1746,13 @@ build_ca: CA key password created via temp-files"
1751
1746
fi
1752
1747
1753
1748
# Generate the CA keypair:
1754
- if [ "$EASYRSA_CA_PASS_NEW " ]; then
1749
+ if [ "$EASYRSA_RAW_CA " ]; then
1755
1750
if easyrsa_openssl req -utf8 -new \
1756
1751
-key "$out_key_tmp" \
1757
1752
-out "$out_file_tmp" \
1758
- ${ssl_batch:+ -batch} \
1759
1753
${x509:+ -x509} \
1760
1754
${date_stamp:+ -days "$EASYRSA_CA_EXPIRE"} \
1761
- ${EASYRSA_DIGEST:+ -"$EASYRSA_DIGEST"} \
1762
- -passin stdin \
1763
- <<-EOF
1764
- ${CA_key_pass}
1765
- EOF
1755
+ ${EASYRSA_DIGEST:+ -"$EASYRSA_DIGEST"}
1766
1756
then
1767
1757
: # ok
1768
1758
unset -v error_info
@@ -1771,7 +1761,7 @@ build_ca: CA key password created via temp-files"
1771
1761
fi
1772
1762
1773
1763
verbose "\
1774
- build_ca: CA certificate password created via stdin "
1764
+ build_ca: CA certificate password created via RAW "
1775
1765
1776
1766
else
1777
1767
easyrsa_openssl req -utf8 -new \
@@ -6220,9 +6210,9 @@ while :; do
6220
6210
--passout)
6221
6211
export EASYRSA_PASSOUT="$val"
6222
6212
;;
6223
- --ca-via-stdin )
6213
+ --raw-ca )
6224
6214
empty_ok=1
6225
- export EASYRSA_CA_PASS_NEW =1
6215
+ export EASYRSA_RAW_CA =1
6226
6216
;;
6227
6217
--notext|--no-text)
6228
6218
empty_ok=1
0 commit comments