Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
certman
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
IML Open Source
certman
Commits
1e233226
Commit
1e233226
authored
Feb 10, 2021
by
Hahn Axel (hahn)
Browse files
Options
Downloads
Patches
Plain Diff
compare hashes; remove FQDN from altnames; logging
parent
a2d1c068
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
cm.sh
+47
-17
47 additions, 17 deletions
cm.sh
readme.md
+2
-2
2 additions, 2 deletions
readme.md
templates/csr.txt.dist
+1
-1
1 addition, 1 deletion
templates/csr.txt.dist
with
50 additions
and
20 deletions
cm.sh
+
47
−
17
View file @
1e233226
...
...
@@ -12,7 +12,8 @@
# - acme.sh client
#
# ----------------------------------------------------------------------
# 2021-02-02
# 2021-02-02 <axel.hahn@iml.unibe.ch> first lines
# 2021-02-10 <axel.hahn@iml.unibe.ch> compare hashes, logging
# ======================================================================
...
...
@@ -24,9 +25,12 @@
selfdir
=
"
$(
dirname
$0
)
"
touchfile
=
"
${
selfdir
}
/log/lastchange.txt"
logfile
=
"
${
selfdir
}
/log/certmanager-
$(
date
+
"%Y%M%d"
)
.log"
# logfile="${selfdir}/log/certmanager-$( date +"%Y%m%d" ).log"
logfile
=
"
${
selfdir
}
/log/certmanager.log"
line
=
"_______________________________________________________________________________"
showdebug
=
1
writelog
=
1
# ----------------------------------------------------------------------
...
...
@@ -35,10 +39,21 @@ showdebug=1
#
# ----------------------------------------------------------------------
# internal function; list certificates incl. creation date and renew date
function
_listCerts
(){
$ACME
--list
}
# internal function; checks if a certificate for a given FQDN already exists
# used in _certMustExist, _certMustNotExist
# param string FQDN
function
_certExists
(){
_listCerts |
awk
'{ print $1 }'
|
grep
"^
${
CM_fqdn
}
$"
>
/dev/null
}
# internal function; a certificate of a given FQDN must exist - otherwise
# the script will be aborted
# param string FQDN
function
_certMustExist
(){
_certExists
if
[
$?
-ne
0
]
;
then
...
...
@@ -46,6 +61,10 @@ function _certMustExist(){
exit
1
fi
}
# internal function; a certificate of a given FQDN must not exist - otherwise
# the script will be aborted
# param string FQDN
function
_certMustNotExist
(){
_certExists
if
[
$?
-eq
0
]
;
then
...
...
@@ -57,6 +76,7 @@ function _certMustNotExist(){
# internal function: transfer generated/ updated cert data to a
# known directory (based on CM_diracme - see inc_config.sh)
# used in public_add and public_renew
# used in ADD and RENEW action
function
_certTransfer
(){
_wd
"--- acme internal data - ~/.acme.sh/
${
CM_fqdn
}
"
ls
-l
~/.acme.sh/
${
CM_fqdn
}
...
...
@@ -80,13 +100,21 @@ function _certTransfer(){
# internal function; show md5 hashsums for certificate, csr and key
# for visual comparison if the match
# TODO: script a comparison to write out MATCH or FAIL
function
_certMatching
(){
local
md5_cert
=
$(
openssl x509
-noout
-modulus
-in
${
CM_outfile_cert
}
| openssl md5 |
cut
-f
2
-d
" "
)
local
md5_csr
=
$(
openssl req
-noout
-modulus
-in
${
CM_filecsr
}
| openssl md5 |
cut
-f
2
-d
" "
)
local
md5_key
=
$(
openssl rsa
-noout
-modulus
-in
${
CM_outfile_key
}
| openssl md5 |
cut
-f
2
-d
" "
)
echo
echo
"--- compare hashes to see if they match"
echo
-n
"cert : "
;
openssl x509
-noout
-modulus
-in
${
CM_outfile_cert
}
| openssl md5
echo
-n
"csr : "
;
openssl req
-noout
-modulus
-in
${
CM_filecsr
}
| openssl md5
echo
-n
"key : "
;
openssl rsa
-noout
-modulus
-in
${
CM_outfile_key
}
| openssl md5
echo
"--- compare hashes"
echo
"cert :
$md5_cert
"
echo
"csr :
$md5_csr
"
echo
"key :
$md5_key
"
if
[
"
$md5_key
"
=
"
$md5_cert
"
-a
"
$md5_key
"
=
"
$md5_csr
"
]
;
then
echo
"OK, they match :-)"
else
echo
"ERROR: they do NOT MATCH!"
fi
echo
}
...
...
@@ -121,8 +149,9 @@ function _gencsr(){
_checkDig
$CM_fqdn
for
myalt
in
$*
do
altdns
=
"
${
altdns
}
,
DNS:
$myalt
"
altdns
=
"
${
altdns
}
DNS:
$myalt
,
"
done
altdns
=
$(
echo
$altdns
|
sed
"s#,
\$
##"
)
_wd
"---
$CM_fqdn
"
_wd
"DNS alternative names:
$altdns
"
...
...
@@ -143,11 +172,8 @@ function _gencsr(){
ls
-ltr
$CM_filecnf
$CM_filekey
$CM_filecsr
}
# internal function; list certificates incl. creation date and renew date
function
_listCerts
(){
$ACME
--list
}
# internal function; check if a required 2nd CLI parameter was given
# if not the script will abort
function
_requiresFqdn
(){
if
[
-z
"
$CM_fqdn
"
]
;
then
echo
"ERROR: 2nd parameter must be a FQDN for Main_Domain."
...
...
@@ -155,6 +181,9 @@ function _requiresFqdn(){
fi
}
# internal function; it shows a message if the current instance uses a stage
# server. It shows a message that it is allowed to test arround ... or to be
# careful with LE requests on a production system
function
_testStaging
(){
echo
$ACME_Params
|
grep
"
\-\-
staging"
>
/dev/null
if
[
$?
-eq
0
]
;
then
...
...
@@ -170,7 +199,8 @@ function _testStaging(){
# set update message in a file
# param string(s) message
function
_update
(){
echo
$(
date
)
$*
>
${
touchfile
}
echo
"[
$(
date
)
]
$*
"
>
${
touchfile
}
test
${
writelog
}
&&
echo
"[
$(
date
)
]
$*
"
>>
${
logfile
}
}
# write debug output if showdebug is set to 1
...
...
@@ -220,7 +250,7 @@ function public_add-or-renew(){
_requiresFqdn
_certExists
if
[
$?
-eq
0
]
;
then
_wd
"--- cert was found ... renew it"
_wd
"--- cert was found ... renew it
(ignore --force - it comes from acme.sh)
"
public_renew
else
_wd
"--- cert does mot exist ... add it"
...
...
@@ -264,7 +294,7 @@ function public_renew(){
_certTransfer
_certMatching
_update
"renew
${
CM_fqdn
}
"
_update
"renew
ed
${
CM_fqdn
}
"
}
#
...
...
This diff is collapsed.
Click to expand it.
readme.md
+
2
−
2
View file @
1e233226
...
...
@@ -2,11 +2,11 @@
Wrapper for acme.sh to create Let's Encrypt certificates based on CSR files using DNS authentication
source: https://git-repo.iml.unibe.ch/open-source/iml-certman
source:
<
https://git-repo.iml.unibe.ch/open-source/iml-certman
>
## Installation
*
Install acme.sh client: https://github.com/acmesh-official/acme.sh
*
Install acme.sh client:
<
https://github.com/acmesh-official/acme.sh
>
*
Clone or extract files of iml-certman
*
Make your changes by copying
*
dist files to file without ".dist" extension and edit
*
inc_config.sh
...
...
This diff is collapsed.
Click to expand it.
templates/csr.txt.dist
+
1
−
1
View file @
1e233226
...
...
@@ -26,7 +26,7 @@ UNITNAME = Department for magic things
FQDN = __FQDN__
# subjectAltName entries: to add DNS aliases to the CSR, delete
ALTNAMES =
DNS:$FQDN
__ALTNAMES__
ALTNAMES = __ALTNAMES__
[ req ]
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment