Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpnSense
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
OpnSense
Commits
c6143dc8
Commit
c6143dc8
authored
Dec 21, 2015
by
Franco Fichtner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
src: manual merge of certmanager rework by Ad
parent
74d2e4d6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
967 additions
and
1071 deletions
+967
-1071
system_certmanager.php
src/www/system_certmanager.php
+967
-1071
No files found.
src/www/system_certmanager.php
View file @
c6143dc8
...
...
@@ -32,237 +32,262 @@ require_once("system.inc");
function
csr_generate
(
&
$cert
,
$keylen
,
$dn
,
$digest_alg
=
'sha256'
)
{
$args
=
array
(
'config'
=>
'/usr/local/etc/ssl/opnsense.cnf'
,
'private_key_type'
=>
OPENSSL_KEYTYPE_RSA
,
'private_key_bits'
=>
(
int
)
$keylen
,
'x509_extensions'
=>
'v3_req'
,
'digest_alg'
=>
$digest_alg
,
'encrypt_key'
=>
false
);
// generate a new key pair
$res_key
=
openssl_pkey_new
(
$args
);
if
(
!
$res_key
)
{
return
false
;
}
// generate a certificate signing request
$res_csr
=
openssl_csr_new
(
$dn
,
$res_key
,
$args
);
if
(
!
$res_csr
)
{
return
false
;
}
// export our request data
if
(
!
openssl_pkey_export
(
$res_key
,
$str_key
)
||
!
openssl_csr_export
(
$res_csr
,
$str_csr
))
{
return
false
;
}
// return our request information
$cert
[
'csr'
]
=
base64_encode
(
$str_csr
);
$cert
[
'prv'
]
=
base64_encode
(
$str_key
);
return
true
;
$args
=
array
(
'config'
=>
'/usr/local/etc/ssl/opnsense.cnf'
,
'private_key_type'
=>
OPENSSL_KEYTYPE_RSA
,
'private_key_bits'
=>
(
int
)
$keylen
,
'x509_extensions'
=>
'v3_req'
,
'digest_alg'
=>
$digest_alg
,
'encrypt_key'
=>
false
);
// generate a new key pair
$res_key
=
openssl_pkey_new
(
$args
);
if
(
!
$res_key
)
{
return
false
;
}
// generate a certificate signing request
$res_csr
=
openssl_csr_new
(
$dn
,
$res_key
,
$args
);
if
(
!
$res_csr
)
{
return
false
;
}
// export our request data
if
(
!
openssl_pkey_export
(
$res_key
,
$str_key
)
||
!
openssl_csr_export
(
$res_csr
,
$str_csr
))
{
return
false
;
}
// return our request information
$cert
[
'csr'
]
=
base64_encode
(
$str_csr
);
$cert
[
'prv'
]
=
base64_encode
(
$str_key
);
return
true
;
}
function
csr_complete
(
&
$cert
,
$str_crt
)
{
// return our request information
$cert
[
'crt'
]
=
base64_encode
(
$str_crt
);
unset
(
$cert
[
'csr'
]);
// return our request information
$cert
[
'crt'
]
=
base64_encode
(
$str_crt
);
unset
(
$cert
[
'csr'
]);
return
true
;
return
true
;
}
function
csr_get_modulus
(
$str_crt
,
$decode
=
true
)
{
return
cert_get_modulus
(
$str_crt
,
$decode
,
'csr'
);
return
cert_get_modulus
(
$str_crt
,
$decode
,
'csr'
);
}
// types
$cert_methods
=
array
(
"import"
=>
gettext
(
"Import an existing Certificate"
),
"internal"
=>
gettext
(
"Create an internal Certificate"
),
"external"
=>
gettext
(
"Create a Certificate Signing Request"
),
);
$cert_keylens
=
array
(
"512"
,
"1024"
,
"2048"
,
"4096"
);
$altname_types
=
array
(
"DNS"
,
"IP"
,
"email"
,
"URI"
);
$openssl_digest_algs
=
array
(
"sha1"
,
"sha224"
,
"sha256"
,
"sha384"
,
"sha512"
);
if
(
isset
(
$_GET
[
'userid'
])
&&
is_numericint
(
$_GET
[
'userid'
]))
{
$userid
=
$_GET
[
'userid'
];
}
if
(
isset
(
$_POST
[
'userid'
])
&&
is_numericint
(
$_POST
[
'userid'
]))
{
$userid
=
$_POST
[
'userid'
];
}
if
(
isset
(
$userid
))
{
$cert_methods
[
"existing"
]
=
gettext
(
"Choose an existing certificate"
);
if
(
!
is_array
(
$config
[
'system'
][
'user'
]))
{
$config
[
'system'
][
'user'
]
=
array
();
}
$a_user
=&
$config
[
'system'
][
'user'
];
}
if
(
isset
(
$_GET
[
'id'
])
&&
is_numericint
(
$_GET
[
'id'
]))
{
$id
=
$_GET
[
'id'
];
// config reference pointers
if
(
!
isset
(
$config
[
'system'
][
'user'
])
||
!
is_array
(
$config
[
'system'
][
'user'
]))
{
$config
[
'system'
][
'user'
]
=
array
();
}
if
(
isset
(
$_POST
[
'id'
])
&&
is_numericint
(
$_POST
[
'id'
]))
{
$id
=
$_POST
[
'id'
];
}
$a_user
=&
$config
[
'system'
][
'user'
];
if
(
!
isset
(
$config
[
'ca'
])
||
!
is_array
(
$config
[
'ca'
]))
{
$config
[
'ca'
]
=
array
();
}
$a_ca
=&
$config
[
'ca'
];
if
(
!
is_array
(
$config
[
'cert'
]))
{
$config
[
'cert'
]
=
array
();
}
$a_cert
=&
$config
[
'cert'
];
$internal_ca_count
=
0
;
foreach
(
$a_ca
as
$ca
)
{
if
(
$ca
[
'prv'
])
{
$internal_ca_count
++
;
}
}
$act
=
null
;
if
(
isset
(
$_GET
[
'act'
]))
{
$act
=
$_GET
[
'act'
];
}
elseif
(
isset
(
$_POST
[
'act'
]))
{
$act
=
$_POST
[
'act'
];
}
if
(
$act
==
"del"
)
{
if
(
!
isset
(
$a_cert
[
$id
]))
{
header
(
"Location: system_certmanager.php"
);
exit
;
// handle user GET/POST data
if
(
$_SERVER
[
'REQUEST_METHOD'
]
===
'GET'
)
{
if
(
isset
(
$a_user
[
$_GET
[
'userid'
]]))
{
$userid
=
$_GET
[
'userid'
];
$cert_methods
[
"existing"
]
=
gettext
(
"Choose an existing certificate"
);
}
if
(
isset
(
$a_cert
[
$_GET
[
'id'
]]))
{
$id
=
$_GET
[
'id'
];
}
$name
=
$a_cert
[
$id
][
'descr'
];
unset
(
$a_cert
[
$id
]);
write_config
();
$savemsg
=
sprintf
(
gettext
(
"Certificate %s successfully deleted"
),
$name
)
.
"<br />"
;
header
(
"Location: system_certmanager.php"
);
exit
;
}
if
(
$act
==
"new"
)
{
if
(
isset
(
$_GET
[
'method'
]))
{
$pconfig
[
'method'
]
=
$_GET
[
'method'
];
if
(
isset
(
$_GET
[
'act'
]))
{
$act
=
$_GET
[
'act'
];
}
else
{
$pconfig
[
'method'
]
=
null
;
$act
=
null
;
}
$pconfig
[
'keylen'
]
=
"2048"
;
$pconfig
[
'digest_alg'
]
=
"sha256"
;
$pconfig
[
'csr_keylen'
]
=
"2048"
;
$pconfig
[
'csr_digest_alg'
]
=
"sha256"
;
$pconfig
[
'lifetime'
]
=
"365"
;
}
if
(
$act
==
"exp"
)
{
if
(
!
$a_cert
[
$id
])
{
header
(
"Location: system_certmanager.php"
);
exit
;
}
$pconfig
=
array
();
if
(
$act
==
"new"
)
{
if
(
isset
(
$_GET
[
'method'
]))
{
$pconfig
[
'certmethod'
]
=
$_GET
[
'method'
];
}
else
{
$pconfig
[
'certmethod'
]
=
null
;
}
$pconfig
[
'keylen'
]
=
"2048"
;
$pconfig
[
'digest_alg'
]
=
"sha256"
;
$pconfig
[
'csr_keylen'
]
=
"2048"
;
$pconfig
[
'csr_digest_alg'
]
=
"sha256"
;
$pconfig
[
'lifetime'
]
=
"365"
;
$pconfig
[
'cert'
]
=
null
;
$pconfig
[
'key'
]
=
null
;
$pconfig
[
'dn_country'
]
=
null
;
$pconfig
[
'dn_state'
]
=
null
;
$pconfig
[
'dn_city'
]
=
null
;
$pconfig
[
'dn_organization'
]
=
null
;
$pconfig
[
'dn_email'
]
=
null
;
if
(
isset
(
$userid
))
{
$pconfig
[
'descr'
]
=
$a_user
[
$userid
][
'name'
];
$pconfig
[
'dn_commonname'
]
=
$a_user
[
$userid
][
'name'
];
}
else
{
$pconfig
[
'descr'
]
=
null
;
$pconfig
[
'dn_commonname'
]
=
null
;
}
$exp_name
=
urlencode
(
"
{
$a_cert
[
$id
][
'descr'
]
}
.crt"
);
$exp_data
=
base64_decode
(
$a_cert
[
$id
][
'crt'
]);
$exp_size
=
strlen
(
$exp_data
);
}
elseif
(
$act
==
"exp"
)
{
if
(
!
isset
(
$id
))
{
header
(
"Location: system_certmanager.php"
);
exit
;
}
header
(
"Content-Type: application/octet-stream"
);
header
(
"Content-Disposition: attachment; filename=
{
$exp_name
}
"
);
header
(
"Content-Length:
$exp_size
"
);
echo
$exp_data
;
exit
;
}
$exp_name
=
urlencode
(
"
{
$a_cert
[
$id
][
'descr'
]
}
.crt"
);
$exp_data
=
base64_decode
(
$a_cert
[
$id
][
'crt'
]);
$exp_size
=
strlen
(
$exp_data
);
if
(
$act
==
"key"
)
{
if
(
!
$a_cert
[
$id
])
{
header
(
"Location: system_certmanager.php"
);
header
(
"Content-Type: application/octet-stream"
);
header
(
"Content-Disposition: attachment; filename=
{
$exp_name
}
"
);
header
(
"Content-Length:
$exp_size
"
);
echo
$exp_data
;
exit
;
}
$exp_name
=
urlencode
(
"
{
$a_cert
[
$id
][
'descr'
]
}
.key
"
);
$exp_data
=
base64_decode
(
$a_cert
[
$id
][
'prv'
])
;
$exp_size
=
strlen
(
$exp_data
);
}
elseif
(
$act
==
"key"
)
{
if
(
!
isset
(
$id
))
{
header
(
"Location: system_certmanager.php
"
);
exit
;
}
header
(
"Content-Type: application/octet-stream"
);
header
(
"Content-Disposition: attachment; filename=
{
$exp_name
}
"
);
header
(
"Content-Length:
$exp_size
"
);
echo
$exp_data
;
exit
;
}
$exp_name
=
urlencode
(
"
{
$a_cert
[
$id
][
'descr'
]
}
.key"
);
$exp_data
=
base64_decode
(
$a_cert
[
$id
][
'prv'
]);
$exp_size
=
strlen
(
$exp_data
);
if
(
$act
==
"p12"
)
{
if
(
!
$a_cert
[
$id
])
{
header
(
"Location: system_certmanager.php"
);
header
(
"Content-Type: application/octet-stream"
);
header
(
"Content-Disposition: attachment; filename=
{
$exp_name
}
"
);
header
(
"Content-Length:
$exp_size
"
);
echo
$exp_data
;
exit
;
}
}
elseif
(
$act
==
"p12"
)
{
if
(
!
isset
(
$id
))
{
header
(
"Location: system_certmanager.php"
);
exit
;
}
$exp_name
=
urlencode
(
"
{
$a_cert
[
$id
][
'descr'
]
}
.p12"
);
$args
=
array
();
$args
[
'friendly_name'
]
=
$a_cert
[
$id
][
'descr'
];
$exp_name
=
urlencode
(
"
{
$a_cert
[
$id
][
'descr'
]
}
.p12"
);
$args
=
array
();
$args
[
'friendly_name'
]
=
$a_cert
[
$id
][
'descr'
];
$ca
=
lookup_ca
(
$a_cert
[
$id
][
'caref'
]);
if
(
$ca
)
{
$args
[
'extracerts'
]
=
openssl_x509_read
(
base64_decode
(
$ca
[
'crt'
]));
}
$ca
=
lookup_ca
(
$a_cert
[
$id
][
'caref'
]);
if
(
$ca
)
{
$args
[
'extracerts'
]
=
openssl_x509_read
(
base64_decode
(
$ca
[
'crt'
]));
}
$res_crt
=
openssl_x509_read
(
base64_decode
(
$a_cert
[
$id
][
'crt'
]));
$res_key
=
openssl_pkey_get_private
(
array
(
0
=>
base64_decode
(
$a_cert
[
$id
][
'prv'
])
,
1
=>
""
));
$res_crt
=
openssl_x509_read
(
base64_decode
(
$a_cert
[
$id
][
'crt'
]));
$res_key
=
openssl_pkey_get_private
(
array
(
0
=>
base64_decode
(
$a_cert
[
$id
][
'prv'
])
,
1
=>
""
));
$exp_data
=
""
;
openssl_pkcs12_export
(
$res_crt
,
$exp_data
,
$res_key
,
null
,
$args
);
$exp_size
=
strlen
(
$exp_data
);
$exp_data
=
""
;
openssl_pkcs12_export
(
$res_crt
,
$exp_data
,
$res_key
,
null
,
$args
);
$exp_size
=
strlen
(
$exp_data
);
header
(
"Content-Type: application/octet-stream"
);
header
(
"Content-Disposition: attachment; filename=
{
$exp_name
}
"
);
header
(
"Content-Length:
$exp_size
"
);
echo
$exp_data
;
exit
;
}
header
(
"Content-Type: application/octet-stream"
);
header
(
"Content-Disposition: attachment; filename=
{
$exp_name
}
"
);
header
(
"Content-Length:
$exp_size
"
);
echo
$exp_data
;
exit
;
}
elseif
(
$act
==
"csr"
)
{
if
(
!
isset
(
$id
))
{
header
(
"Location: system_certmanager.php"
);
exit
;
}
$pconfig
[
'descr'
]
=
$a_cert
[
$id
][
'descr'
];
$pconfig
[
'csr'
]
=
base64_decode
(
$a_cert
[
$id
][
'csr'
]);
$pconfig
[
'cert'
]
=
null
;
}
}
elseif
(
$_SERVER
[
'REQUEST_METHOD'
]
===
'POST'
)
{
if
(
isset
(
$a_cert
[
$_POST
[
'id'
]]))
{
$id
=
$_POST
[
'id'
];
}
if
(
isset
(
$a_user
[
$_POST
[
'userid'
]]))
{
$userid
=
$_POST
[
'userid'
];
}
if
(
isset
(
$_POST
[
'act'
]))
{
$act
=
$_POST
[
'act'
];
}
else
{
$act
=
null
;
}
if
(
$act
==
"csr"
)
{
if
(
!
$a_cert
[
$id
])
{
if
(
$act
==
"del"
)
{
if
(
isset
(
$id
))
{
unset
(
$a_cert
[
$id
]);
write_config
();
}
header
(
"Location: system_certmanager.php"
);
exit
;
}
}
elseif
(
$act
==
"csr"
)
{
$input_errors
=
array
();
$pconfig
=
$_POST
;
if
(
!
isset
(
$id
))
{
header
(
"Location: system_certmanager.php"
);
exit
;
}
$pconfig
[
'descr'
]
=
$a_cert
[
$id
][
'descr'
];
$pconfig
[
'csr'
]
=
base64_decode
(
$a_cert
[
$id
][
'csr'
]);
}
/* input validation */
$reqdfields
=
explode
(
" "
,
"descr cert"
);
$reqdfieldsn
=
array
(
gettext
(
"Descriptive name"
),
gettext
(
"Final Certificate data"
));
do_input_validation
(
$_POST
,
$reqdfields
,
$reqdfieldsn
,
$input_errors
);
$mod_csr
=
csr_get_modulus
(
$pconfig
[
'csr'
],
false
);
$mod_cert
=
cert_get_modulus
(
$pconfig
[
'cert'
],
false
);
if
(
strcmp
(
$mod_csr
,
$mod_cert
))
{
// simply: if the moduli don't match, then the private key and public key won't match
$input_errors
[]
=
gettext
(
"The certificate modulus does not match the signing request modulus."
);
$subject_mismatch
=
true
;
}
/* save modifications */
if
(
count
(
$input_errors
)
==
0
)
{
$cert
=
$a_cert
[
$id
];
csr_complete
(
$cert
,
$pconfig
[
'cert'
]);
$a_cert
[
$id
]
=
$cert
;
if
(
$_POST
)
{
if
(
$_POST
[
'save'
]
==
gettext
(
"Save"
))
{
write_config
();
header
(
"Location: system_certmanager.php"
);
exit
;
}
}
elseif
(
!
empty
(
$_POST
[
'save'
]))
{
$input_errors
=
array
();
$pconfig
=
$_POST
;
/* input validation */
if
(
$pconfig
[
'method'
]
==
"import"
)
{
$reqdfields
=
explode
(
" "
,
"descr cert key"
);
if
(
$pconfig
[
'certmethod'
]
==
"import"
)
{
$reqdfields
=
explode
(
" "
,
"descr cert key"
);
$reqdfieldsn
=
array
(
gettext
(
"Descriptive name"
),
gettext
(
"Certificate data"
),
gettext
(
"Key data"
));
if
(
$_POST
[
'cert'
]
&&
(
!
strstr
(
$_POST
[
'cert'
],
"BEGIN CERTIFICATE"
)
||
!
strstr
(
$_POST
[
'cert'
],
"END CERTIFICATE"
)))
{
if
(
!
empty
(
$pconfig
[
'cert'
])
&&
(
!
strstr
(
$pconfig
[
'cert'
],
"BEGIN CERTIFICATE"
)
||
!
strstr
(
$pconfig
[
'cert'
],
"END CERTIFICATE"
)))
{
$input_errors
[]
=
gettext
(
"This certificate does not appear to be valid."
);
}
}
if
(
$pconfig
[
'method'
]
==
"internal"
)
{
$reqdfields
=
explode
(
" "
,
"descr caref keylen lifetime dn_country dn_state dn_city "
.
}
elseif
(
$pconfig
[
'certmethod'
]
==
"internal"
)
{
$reqdfields
=
explode
(
" "
,
"descr caref keylen lifetime dn_country dn_state dn_city "
.
"dn_organization dn_email dn_commonname"
);
$reqdfieldsn
=
array
(
...
...
@@ -276,12 +301,8 @@ if ($_POST) {
gettext
(
"Distinguished name Organization"
),
gettext
(
"Distinguished name Email Address"
),
gettext
(
"Distinguished name Common Name"
));
}
if
(
$pconfig
[
'method'
]
==
"external"
)
{
$reqdfields
=
explode
(
" "
,
"descr csr_keylen csr_dn_country csr_dn_state csr_dn_city "
.
}
elseif
(
$pconfig
[
'certmethod'
]
==
"external"
)
{
$reqdfields
=
explode
(
" "
,
"descr csr_keylen csr_dn_country csr_dn_state csr_dn_city "
.
"csr_dn_organization csr_dn_email csr_dn_commonname"
);
$reqdfieldsn
=
array
(
...
...
@@ -293,34 +314,23 @@ if ($_POST) {
gettext
(
"Distinguished name Organization"
),
gettext
(
"Distinguished name Email Address"
),
gettext
(
"Distinguished name Common Name"
));
}
if
(
$pconfig
[
'method'
]
==
"existing"
)
{
}
elseif
(
$pconfig
[
'certmethod'
]
==
"existing"
)
{
$reqdfields
=
array
(
"certref"
);
$reqdfieldsn
=
array
(
gettext
(
"Existing Certificate Choice"
));
}
$altnames
=
array
();
do_input_validation
(
$
_POST
,
$reqdfields
,
$reqdfieldsn
,
$input_errors
);
if
(
$pconfig
[
'method'
]
!=
"import"
&&
$pconfig
[
'
method'
]
!=
"existing"
)
{
do_input_validation
(
$
pconfig
,
$reqdfields
,
$reqdfieldsn
,
$input_errors
);
if
(
isset
(
$pconfig
[
'altname_value'
])
&&
$pconfig
[
'certmethod'
]
!=
"import"
&&
$pconfig
[
'cert
method'
]
!=
"existing"
)
{
/* subjectAltNames */
foreach
(
$_POST
as
$key
=>
$value
)
{
$entry
=
''
;
if
(
!
substr_compare
(
'altname_type'
,
$key
,
0
,
12
))
{
$entry
=
substr
(
$key
,
12
);
$field
=
'type'
;
}
elseif
(
!
substr_compare
(
'altname_value'
,
$key
,
0
,
13
))
{
$entry
=
substr
(
$key
,
13
);
$field
=
'value'
;
}
if
(
ctype_digit
(
$entry
))
{
$altnames
[
$entry
][
$field
]
=
$value
;
foreach
(
$pconfig
[
'altname_type'
]
as
$altname_seq
=>
$altname_type
)
{
if
(
!
empty
(
$pconfig
[
'altname_value'
][
$altname_seq
]))
{
$altnames
[]
=
array
(
"type"
=>
$altname_type
,
"value"
=>
$pconfig
[
'altname_value'
][
$altname_seq
]);
}
}
$pconfig
[
'altnames'
][
'item'
]
=
$altnames
;
/* Input validation for subjectAltNames */
foreach
(
$altnames
as
$
idx
=>
$
altname
)
{
foreach
(
$altnames
as
$altname
)
{
switch
(
$altname
[
'type'
])
{
case
"DNS"
:
if
(
!
is_hostname
(
$altname
[
'value'
]))
{
...
...
@@ -341,7 +351,6 @@ if ($_POST) {
}
break
;
case
"URI"
:
/* Close enough? */
if
(
!
is_URL
(
$altname
[
'value'
]))
{
$input_errors
[]
=
gettext
(
"URI subjectAltName types must be a valid URI"
);
}
...
...
@@ -354,40 +363,40 @@ if ($_POST) {
/* Make sure we do not have invalid characters in the fields for the certificate */
for
(
$i
=
0
;
$i
<
count
(
$reqdfields
);
$i
++
)
{
if
(
preg_match
(
'/email/'
,
$reqdfields
[
$i
]))
{
/* dn_email or csr_dn_name */
if
(
preg_match
(
"/[\!\#
\$
\%\^\(\)\~\?\>\<\&\/
\\
\,
\"
\']/"
,
$
_POST
[
$reqdfields
[
$i
]]))
{
/* dn_email or csr_dn_name */
if
(
preg_match
(
"/[\!\#
\$
\%\^\(\)\~\?\>\<\&\/
\\
\,
\"
\']/"
,
$
pconfig
[
$reqdfields
[
$i
]]))
{
$input_errors
[]
=
gettext
(
"The field 'Distinguished name Email Address' contains invalid characters."
);
}
}
elseif
(
preg_match
(
'/commonname/'
,
$reqdfields
[
$i
]))
{
/* dn_commonname or csr_dn_commonname */
if
(
preg_match
(
"/[\!\@\#
\$
\%\^\(\)\~\?\>\<\&\/
\\
\,
\"
\']/"
,
$
_POST
[
$reqdfields
[
$i
]]))
{
/* dn_commonname or csr_dn_commonname */
if
(
preg_match
(
"/[\!\@\#
\$
\%\^\(\)\~\?\>\<\&\/
\\
\,
\"
\']/"
,
$
pconfig
[
$reqdfields
[
$i
]]))
{
$input_errors
[]
=
gettext
(
"The field 'Distinguished name Common Name' contains invalid characters."
);
}
}
elseif
((
$reqdfields
[
$i
]
!=
"descr"
)
&&
preg_match
(
"/[\!\@\#
\$
\%\^\(\)\~\?\>\<\&\/
\\
\,\.
\"
\']/"
,
$
_POST
[
$reqdfields
[
$i
]]))
{
}
elseif
((
$reqdfields
[
$i
]
!=
"descr"
)
&&
preg_match
(
"/[\!\@\#
\$
\%\^\(\)\~\?\>\<\&\/
\\
\,\.
\"
\']/"
,
$
pconfig
[
$reqdfields
[
$i
]]))
{
$input_errors
[]
=
sprintf
(
gettext
(
"The field '%s' contains invalid characters."
),
$reqdfieldsn
[
$i
]);
}
}
if
(
(
$pconfig
[
'method'
]
!=
"external"
)
&&
isset
(
$_POST
[
"keylen"
])
&&
!
in_array
(
$_POST
[
"keylen"
],
$cert_keylens
))
{
if
(
$pconfig
[
'certmethod'
]
!=
"external"
&&
isset
(
$pconfig
[
"keylen"
])
&&
!
in_array
(
$pconfig
[
"keylen"
],
$cert_keylens
))
{
$input_errors
[]
=
gettext
(
"Please select a valid Key Length."
);
}
if
(
(
$pconfig
[
'method'
]
!=
"external"
)
&&
!
in_array
(
$_POST
[
"digest_alg"
],
$openssl_digest_algs
))
{
if
(
$pconfig
[
'certmethod'
]
!=
"external"
&&
!
in_array
(
$pconfig
[
"digest_alg"
],
$openssl_digest_algs
))
{
$input_errors
[]
=
gettext
(
"Please select a valid Digest Algorithm."
);
}
if
(
(
$pconfig
[
'method'
]
==
"external"
)
&&
isset
(
$_POST
[
"csr_keylen"
])
&&
!
in_array
(
$_POST
[
"csr_keylen"
],
$cert_keylens
))
{
if
(
$pconfig
[
'certmethod'
]
==
"external"
&&
isset
(
$pconfig
[
"csr_keylen"
])
&&
!
in_array
(
$pconfig
[
"csr_keylen"
],
$cert_keylens
))
{
$input_errors
[]
=
gettext
(
"Please select a valid Key Length."
);
}
if
(
(
$pconfig
[
'method'
]
==
"external"
)
&&
!
in_array
(
$_POST
[
"csr_digest_alg"
],
$openssl_digest_algs
))
{
if
(
$pconfig
[
'certmethod'
]
==
"external"
&&
!
in_array
(
$pconfig
[
"csr_digest_alg"
],
$openssl_digest_algs
))
{
$input_errors
[]
=
gettext
(
"Please select a valid Digest Algorithm."
);
}
}
/* save modifications */
if
(
!
$input_errors
)
{
if
(
$pconfig
[
'method'
]
==
"existing"
)
{
if
(
count
(
$input_errors
)
==
0
)
{
if
(
$pconfig
[
'
cert
method'
]
==
"existing"
)
{
$cert
=
lookup_cert
(
$pconfig
[
'certref'
]);
if
(
$cert
&&
$a_user
)
{
if
(
$cert
&&
!
empty
(
$userid
)
)
{
$a_user
[
$userid
][
'cert'
][]
=
$cert
[
'refid'
];
}
}
else
{
...
...
@@ -401,11 +410,11 @@ if ($_POST) {
$old_err_level
=
error_reporting
(
0
);
/* otherwise openssl_ functions throw warings directly to a page screwing menu tab */
if
(
$pconfig
[
'method'
]
==
"import"
)
{
if
(
$pconfig
[
'
cert
method'
]
==
"import"
)
{
cert_import
(
$cert
,
$pconfig
[
'cert'
],
$pconfig
[
'key'
]);
}
if
(
$pconfig
[
'method'
]
==
"internal"
)
{
if
(
$pconfig
[
'
cert
method'
]
==
"internal"
)
{
$dn
=
array
(
'countryName'
=>
$pconfig
[
'dn_country'
],
'stateOrProvinceName'
=>
$pconfig
[
'dn_state'
],
...
...
@@ -420,6 +429,7 @@ if ($_POST) {
}
$dn
[
'subjectAltName'
]
=
implode
(
","
,
$altnames_tmp
);
}
if
(
!
cert_create
(
$cert
,
$pconfig
[
'caref'
],
...
...
@@ -435,7 +445,7 @@ if ($_POST) {
}
}
if
(
$pconfig
[
'method'
]
==
"external"
)
{
if
(
$pconfig
[
'
cert
method'
]
==
"external"
)
{
$dn
=
array
(
'countryName'
=>
$pconfig
[
'csr_dn_country'
],
'stateOrProvinceName'
=>
$pconfig
[
'csr_dn_state'
],
...
...
@@ -459,7 +469,7 @@ if ($_POST) {
}
error_reporting
(
$old_err_level
);
if
(
isset
(
$id
)
&&
$a_cert
[
$id
]
)
{
if
(
isset
(
$id
))
{
$a_cert
[
$id
]
=
$cert
;
}
else
{
$a_cert
[]
=
$cert
;
...
...
@@ -468,901 +478,787 @@ if ($_POST) {
$a_user
[
$userid
][
'cert'
][]
=
$cert
[
'refid'
];
}
}
if
(
!
$input_errors
)
{
if
(
count
(
$input_errors
)
==
0
)
{
write_config
();
}
if
(
isset
(
$userid
))
{
header
(
"Location: system_usermanager.php?act=edit&userid="
.
$userid
);
if
(
isset
(
$userid
))
{
header
(
"Location: system_usermanager.php?act=edit&userid="
.
$userid
);
}
else
{
header
(
"Location: system_certmanager.php"
);
}
exit
;
}
}
}
if
(
$_POST
[
'save'
]
==
gettext
(
"Update"
))
{
unset
(
$input_errors
);
$pconfig
=
$_POST
;
/* input validation */
$reqdfields
=
explode
(
" "
,
"descr cert"
);
$reqdfieldsn
=
array
(
gettext
(
"Descriptive name"
),
gettext
(
"Final Certificate data"
));
do_input_validation
(
$_POST
,
$reqdfields
,
$reqdfieldsn
,
$input_errors
);
// old way
/* make sure this csr and certificate subjects match */
// $subj_csr = csr_get_subject($pconfig['csr'], false);
// $subj_cert = cert_get_subject($pconfig['cert'], false);
//
// if ( !isset($_POST['ignoresubjectmismatch']) && !($_POST['ignoresubjectmismatch'] == "yes") ) {
// if (strcmp($subj_csr,$subj_cert)) {
// $input_errors[] = sprintf(gettext("The certificate subject '%s' does not match the signing request subject."),$subj_cert);
// $subject_mismatch = true;
// }
// }
$mod_csr
=
csr_get_modulus
(
$pconfig
[
'csr'
],
false
);
$mod_cert
=
cert_get_modulus
(
$pconfig
[
'cert'
],
false
);
if
(
strcmp
(
$mod_csr
,
$mod_cert
))
{
// simply: if the moduli don't match, then the private key and public key won't match
$input_errors
[]
=
gettext
(
"The certificate modulus does not match the signing request modulus."
);
$subject_mismatch
=
true
;
}
/* save modifications */
if
(
!
$input_errors
)
{
$cert
=
$a_cert
[
$id
];
$cert
[
'descr'
]
=
$pconfig
[
'descr'
];
csr_complete
(
$cert
,
$pconfig
[
'cert'
]);
$a_cert
[
$id
]
=
$cert
;
write_config
();
header
(
"Location: system_certmanager.php"
);
}
}
}
include
(
"head.inc"
);
$main_buttons
=
array
(
array
(
'label'
=>
gettext
(
"add or import certificate"
),
'href'
=>
'system_certmanager.php?act=new'
),
);
?>
<body>
<?php
include
(
"fbegin.inc"
);
?>
<script
type=
"text/javascript"
>
//
<!
[
CDATA
[
function
method_change
()
{
<?php
if
(
$internal_ca_count
)
{
$submit_style
=
""
;
}
else
{
$submit_style
=
"none"
;
}
?>
method
=
document
.
iform
.
method
.
selectedIndex
;
switch
(
method
)
{
case
0
:
document
.
getElementById
(
"
import
"
).
style
.
display
=
""
;
document
.
getElementById
(
"
internal
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
external
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
existing
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
descriptivename
"
).
style
.
display
=
""
;
document
.
getElementById
(
"
submit
"
).
style
.
display
=
""
;
break
;
case
1
:
document
.
getElementById
(
"
import
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
internal
"
).
style
.
display
=
""
;
document
.
getElementById
(
"
external
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
existing
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
descriptivename
"
).
style
.
display
=
""
;
document
.
getElementById
(
"
submit
"
).
style
.
display
=
"
<?=
$submit_style
;
?>
"
;
break
;
case
2
:
document
.
getElementById
(
"
import
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
internal
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
external
"
).
style
.
display
=
""
;
document
.
getElementById
(
"
existing
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
descriptivename
"
).
style
.
display
=
""
;
document
.
getElementById
(
"
submit
"
).
style
.
display
=
""
;
break
;
case
3
:
document
.
getElementById
(
"
import
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
internal
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
external
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
existing
"
).
style
.
display
=
""
;
document
.
getElementById
(
"
descriptivename
"
).
style
.
display
=
"
none
"
;
document
.
getElementById
(
"
submit
"
).
style
.
display
=
""
;
break
;
}
if
(
empty
(
$act
))
{
$main_buttons
=
array
(
array
(
'label'
=>
gettext
(
"add or import certificate"
),
'href'
=>
'system_certmanager.php?act=new'
),
);
}
<?php
if
(
$internal_ca_count
)
:
?>
function
internalca_change
()
{
index
=
document
.
iform
.
caref
.
selectedIndex
;
caref
=
document
.
iform
.
caref
[
index
].
value
;
<body>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
// delete entry
$
(
"
.act_delete
"
).
click
(
function
(
event
){
event
.
preventDefault
();
var
id
=
$
(
this
).
data
(
'
id
'
);
BootstrapDialog
.
show
({
type
:
BootstrapDialog
.
TYPE_INFO
,
title
:
"
<?=
gettext
(
"Certificates"
);
?>
"
,
message
:
"
<?=
gettext
(
"Do you really want to delete this Certificate?"
);
?>
"
,
buttons
:
[{
label
:
"
<?=
gettext
(
"No"
);
?>
"
,
action
:
function
(
dialogRef
)
{
dialogRef
.
close
();
}},
{
label
:
"
<?=
gettext
(
"Yes"
);
?>
"
,
action
:
function
(
dialogRef
)
{
$
(
"
#id
"
).
val
(
id
);
$
(
"
#action
"
).
val
(
"
del
"
);
$
(
"
#iform
"
).
submit
()
}
}]
});
});
/**
* remove row from altNametable
*/
function
removeRowAltNm
()
{
if
(
$
(
'
#altNametable > tbody > tr
'
).
length
==
1
)
{
$
(
'
#altNametable > tbody > tr:last > td > input
'
).
each
(
function
(){
$
(
this
).
val
(
""
);
});
}
else
{
$
(
this
).
parent
().
parent
().
remove
();
}
}
// javascript only for edit forms
if
(
$
(
'
#certmethod
'
).
length
)
{
// no ca's found, display message
if
(
$
(
"
#caref option
"
).
size
()
==
0
)
{
$
(
"
#no_caref
"
).
removeClass
(
"
hidden
"
);
$
(
"
#caref
"
).
addClass
(
"
hidden
"
);
}
// add new detail record
$
(
"
#addNewAltNm
"
).
click
(
function
(){
// copy last row and reset values
$
(
'
#altNametable > tbody
'
).
append
(
'
<tr>
'
+
$
(
'
#altNametable > tbody > tr:last
'
).
html
()
+
'
</tr>
'
);
$
(
'
#altNametable > tbody > tr:last > td > input
'
).
each
(
function
(){
$
(
this
).
val
(
""
);
});
$
(
"
.act-removerow-altnm
"
).
click
(
removeRowAltNm
);
});
$
(
"
.act-removerow-altnm
"
).
click
(
removeRowAltNm
);
$
(
"
#certmethod
"
).
change
(
function
(){
$
(
"
#import
"
).
addClass
(
"
hidden
"
);
$
(
"
#internal
"
).
addClass
(
"
hidden
"
);
$
(
"
#external
"
).
addClass
(
"
hidden
"
);
$
(
"
#existing
"
).
addClass
(
"
hidden
"
);
if
(
$
(
this
).
val
()
==
"
import
"
)
{
$
(
"
#import
"
).
removeClass
(
"
hidden
"
);
}
else
if
(
$
(
this
).
val
()
==
"
internal
"
)
{
$
(
"
#internal
"
).
removeClass
(
"
hidden
"
);
}
else
if
(
$
(
this
).
val
()
==
"
external
"
)
{
$
(
"
#external
"
).
removeClass
(
"
hidden
"
);
}
else
{
$
(
"
#existing
"
).
removeClass
(
"
hidden
"
);
}
});
switch
(
caref
)
{
<?php
foreach
(
$a_ca
as
$ca
)
:
if
(
!
$ca
[
'prv'
])
{
continue
;
$
(
"
#certmethod
"
).
change
();
}
$subject
=
cert_get_subject_array
(
$ca
[
'crt'
]);
?>
case
"
<?=
$ca
[
'refid'
];
?>
"
:
document
.
iform
.
dn_country
.
value
=
"
<?=
$subject
[
0
][
'v'
];
?>
"
;
document
.
iform
.
dn_state
.
value
=
"
<?=
$subject
[
1
][
'v'
];
?>
"
;
document
.
iform
.
dn_city
.
value
=
"
<?=
$subject
[
2
][
'v'
];
?>
"
;
document
.
iform
.
dn_organization
.
value
=
"
<?=
$subject
[
3
][
'v'
];
?>
"
;
document
.
iform
.
dn_email
.
value
=
"
<?=
$subject
[
4
][
'v'
];
?>
"
;
break
;
<?php
endforeach
;
?>
}
}
<?php
endif
;
?>
});
</script>
//]]>
</script>
<script
type=
"text/javascript"
src=
"/javascript/row_helper_dynamic.js"
></script>
<input
type=
'hidden'
name=
'altname_value_type'
value=
'select'
/>
<input
type=
'hidden'
name=
'altname_type_type'
value=
'textbox'
/>
<?php
include
(
"fbegin.inc"
);
?>
<script
type=
"text/javascript"
>
$
(
document
).
ready
(
function
()
{
//
<!
[
CDATA
[
rowname
[
0
]
=
"
altname_type
"
;
rowtype
[
0
]
=
"
textbox
"
;
rowsize
[
0
]
=
"
10
"
;
rowname
[
1
]
=
"
altname_value
"
;
rowtype
[
1
]
=
"
textbox
"
;
rowsize
[
1
]
=
"
30
"
;
function
internalca_change
()
{
index
=
document
.
iform
.
caref
.
selectedIndex
;
caref
=
document
.
iform
.
caref
[
index
].
value
;
switch
(
caref
)
{
<?php
foreach
(
$a_ca
as
$ca
)
:
if
(
!
$ca
[
'prv'
])
{
continue
;
}
$subject
=
cert_get_subject_array
(
$ca
[
'crt'
]);
?>
case
"
<?=
$ca
[
'refid'
];
?>
"
:
$
(
"
#dn_state
"
).
val
(
"
<?=
$subject
[
1
][
'v'
];
?>
"
);
$
(
"
#dn_city
"
).
val
(
"
<?=
$subject
[
2
][
'v'
];
?>
"
);
$
(
"
#dn_organization
"
).
val
(
"
<?=
$subject
[
3
][
'v'
];
?>
"
);
$
(
"
#dn_email
"
).
val
(
"
<?=
$subject
[
4
][
'v'
];
?>
"
);
$
(
'
#dn_country option
'
).
removeAttr
(
'
selected
'
);
$
(
'
#dn_country option
'
).
filter
(
'
[value="
<?=
$subject
[
0
][
'v'
];
?>
"]
'
).
prop
(
'
selected
'
,
true
);
$
(
"
#dn_country
"
).
selectpicker
(
'
refresh
'
);
break
;
<?php
endforeach
;
?>
}
}
// only trigger change event when in edit mode.
if
(
$
(
'
#certmethod
'
).
length
)
{
$
(
"
#caref
"
).
change
(
internalca_change
);
$
(
"
#caref
"
).
change
();
}
});
//]]>
</script>
<!-- row -->
<section
class=
"page-content-main"
>
<div
class=
"container-fluid"
>
<div
class=
"row"
>
<?php
if
(
isset
(
$input_errors
)
&&
count
(
$input_errors
)
>
0
)
{
print_input_errors
(
$input_errors
);
}
if
(
isset
(
$savemsg
))
{
print_info_box
(
$savemsg
);
}
?>
<section
class=
"col-xs-12"
>
<div
class=
"content-box tab-content table-responsive"
>
<?php
if
(
$act
==
"new"
||
((
isset
(
$_POST
[
'save'
])
&&
$_POST
[
'save'
]
==
gettext
(
"Save"
))
&&
$input_errors
))
:
?>
<form
action=
"system_certmanager.php"
method=
"post"
name=
"iform"
id=
"iform"
>
<table
width=
"100%"
border=
"0"
cellpadding=
"6"
cellspacing=
"0"
summary=
"main area"
class=
"table table-striped"
>
<?php
if
(
!
isset
(
$id
))
:
?>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Method"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<select
name=
'method'
id=
'method'
class=
"formselect"
onchange=
'method_change()'
>
<?php
foreach
(
$cert_methods
as
$method
=>
$desc
)
:
$selected
=
""
;
if
(
$pconfig
[
'method'
]
==
$method
)
{
$selected
=
" selected=
\"
selected
\"
"
;
}
?>
<option
value=
"
<?=
$method
;
?>
"
<?=
$selected
;
?>
>
<?=
$desc
;
?>
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
<?php
endif
;
?>
<tr
id=
"descriptivename"
>
<?php
if
(
isset
(
$a_user
)
&&
empty
(
$pconfig
[
'descr'
]))
{
$pconfig
[
'descr'
]
=
$a_user
[
$userid
][
'name'
];
}
?>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Descriptive name"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<input
name=
"descr"
type=
"text"
class=
"formfld unknown"
id=
"descr"
size=
"20"
value=
"
<?php
if
(
isset
(
$pconfig
[
'descr'
]))
echo
htmlspecialchars
(
$pconfig
[
'descr'
]);
?>
"
/>
</td>
</tr>
</table>
<table
width=
"100%"
border=
"0"
cellpadding=
"6"
cellspacing=
"0"
id=
"import"
summary=
"import"
class=
"table table-striped"
>
<thead>
<tr>
<th
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"Import Certificate"
);
?>
</th>
</tr>
</thead>
<tbody>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Certificate data"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<textarea
name=
"cert"
id=
"cert"
cols=
"65"
rows=
"7"
class=
"formfld_cert"
>
<?php
if
(
isset
(
$pconfig
[
'cert'
]))
echo
htmlspecialchars
(
$pconfig
[
'cert'
]);
?>
</textarea>
<br
/>
<?=
gettext
(
"Paste a certificate in X.509 PEM format here."
);
?>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Private key data"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<textarea
name=
"key"
id=
"key"
cols=
"65"
rows=
"7"
class=
"formfld_cert"
>
<?php
if
(
isset
(
$pconfig
[
'key'
]))
echo
htmlspecialchars
(
$pconfig
[
'key'
]);
?>
</textarea>
<br
/>
<?=
gettext
(
"Paste a private key in X.509 PEM format here."
);
?>
</td>
</tr>
</tbody>
</table>
<table
width=
"100%"
border=
"0"
cellpadding=
"6"
cellspacing=
"0"
id=
"internal"
summary=
"internal"
class=
"table table-striped"
>
<thead>
<tr>
<th
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"Internal Certificate"
);
?>
</th>
</tr>
</thead>
<tbody>
<?php
if
(
!
$internal_ca_count
)
:
<div
class=
"container-fluid"
>
<div
class=
"row"
>
<?php
if
(
isset
(
$input_errors
)
&&
count
(
$input_errors
)
>
0
)
{
print_input_errors
(
$input_errors
);
}
if
(
isset
(
$savemsg
))
{
print_info_box
(
$savemsg
);
}
?>
<section
class=
"col-xs-12"
>
<div
class=
"content-box tab-content table-responsive"
>
<tr>
<td
colspan=
"2"
align=
"center"
class=
"vtable"
>
<?=
gettext
(
"No internal Certificate Authorities have been defined. You must"
);
?>
<a
href=
"system_camanager.php?act=new&method=internal"
>
<?=
gettext
(
"create"
);
?>
</a>
<?=
gettext
(
"an internal CA before creating an internal certificate."
);
?>
</td>
</tr>
<?php
if
(
$act
==
"new"
)
:?>
<
form
action
=
"system_certmanager.php"
method
=
"post"
name
=
"iform"
id
=
"iform"
>
<
input
type
=
"hidden"
name
=
"act"
value
=
"<?=
$act
;?>"
/>
<?
php
if
(
isset
(
$userid
))
:?>
<
input
name
=
"userid"
type
=
"hidden"
value
=
"<?=htmlspecialchars(
$userid
);?>"
/>
<?
php
endif
;
?>
<?php
if
(
isset
(
$id
))
:?>
<
input
name
=
"id"
type
=
"hidden"
value
=
"<?=
$id
;?>"
/>
<?
php
endif
;
?>
<table
class=
"table table-striped"
>
<tr>
<td
width=
"22%"
></td>
<td
width=
"78%"
align=
"right"
>
<small>
<?=
gettext
(
"full help"
);
?>
</small>
<i
class=
"fa fa-toggle-off text-danger"
style=
"cursor: pointer;"
id=
"show_all_help_page"
type=
"button"
></i></a>
</td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Method"
);
?>
</td>
<td>
<select
name=
"certmethod"
id=
"certmethod"
>
<?php
foreach
(
$cert_methods
as
$method
=>
$desc
)
:?>
<
option
value
=
"<?=
$method
;?>"
<?=
$pconfig
[
'certmethod'
]
==
$method
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$desc
;
?>
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Descriptive name"
);
?>
</td>
<td>
<input
name=
"descr"
type=
"text"
id=
"descr"
size=
"20"
value=
"
<?=
$pconfig
[
'descr'
];
?>
"
/>
</td>
</tr>
</table>
<!-- existing cert -->
<table
id=
"import"
class=
"table table-striped"
>
<thead>
<tr>
<th
colspan=
"2"
>
<?=
gettext
(
"Import Certificate"
);
?>
</th>
</tr>
</thead>
<tbody>
<tr>
<td
width=
"22%"
><a
id=
"help_for_cert"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Certificate data"
);
?>
</td>
<td
width=
"78%"
>
<textarea
name=
"cert"
id=
"cert"
cols=
"65"
rows=
"7"
>
<?=
$pconfig
[
'cert'
];
?>
</textarea>
<div
class=
"hidden"
for=
"help_for_cert"
>
<?=
gettext
(
"Paste a certificate in X.509 PEM format here."
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_key"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Private key data"
);
?>
</td>
<td>
<textarea
name=
"key"
id=
"key"
cols=
"65"
rows=
"7"
class=
"formfld_cert"
>
<?=
$pconfig
[
'key'
];
?>
</textarea>
<div
class=
"hidden"
for=
"help_for_key"
>
<?=
gettext
(
"Paste a private key in X.509 PEM format here."
);
?>
</div>
</td>
</tr>
</tbody>
</table>
<!-- internal cert -->
<table
id=
"internal"
class=
"table table-striped"
>
<thead>
<tr>
<th
colspan=
"2"
>
<?=
gettext
(
"Internal Certificate"
);
?>
</th>
</tr>
</thead>
<tbody>
<tr>
<td
width=
"22%"
>
<?=
gettext
(
"Certificate authority"
);
?>
</td>
<td
width=
"78%"
>
<select
name=
'caref'
id=
'caref'
>
<?php
foreach
(
$a_ca
as
$ca
)
:
if
(
!
$ca
[
'prv'
])
{
continue
;
}
?>
<option
value=
"
<?=
$ca
[
'refid'
];
?>
"
<?=
isset
(
$pconfig
[
'caref'
])
&&
isset
(
$ca
[
'refid'
])
&&
$pconfig
[
'caref'
]
==
$ca
[
'refid'
]
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$ca
[
'descr'
];
?>
</option>
<?php
endforeach
;
?>
</select>
<div
class=
"hidden"
id=
"no_caref"
>
<?=
gettext
(
"No internal Certificate Authorities have been defined. You must"
);
?>
<a
href=
"system_camanager.php?act=new&method=internal"
>
<?=
gettext
(
"create"
);
?>
</a>
<?=
gettext
(
"an internal CA before creating an internal certificate."
);
?>
</div>
</td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Key length"
);
?>
(
<?=
gettext
(
"bits"
);
?>
)
</td>
<td>
<select
name=
'keylen'
class=
"formselect"
>
<?php
foreach
(
$cert_keylens
as
$len
)
:?>
<
option
value
=
"<?=
$len
;?>"
<?=
$pconfig
[
'keylen'
]
==
$len
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$len
;
?>
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_alg"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Digest Algorithm"
);
?>
</td>
<td>
<select
name=
'digest_alg'
id=
'digest_alg'
class=
"formselect"
>
<?php
foreach
(
$openssl_digest_algs
as
$digest_alg
)
:?>
<
option
value
=
"<?=
$digest_alg
;?>"
<?=
$pconfig
[
'digest_alg'
]
==
$digest_alg
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
strtoupper
(
$digest_alg
);
?>
</option>
<?php
endforeach
;
?>
</select>
<div
class=
"hidden"
for=
"help_for_digest_alg"
>
<?=
gettext
(
"NOTE: It is recommended to use an algorithm stronger than SHA1 when possible."
)
?>
</div>
</td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Lifetime"
);
?>
(
<?=
gettext
(
"days"
);
?>
)
</td>
<td>
<input
name=
"lifetime"
type=
"text"
id=
"lifetime"
size=
"5"
value=
"
<?=
$pconfig
[
'lifetime'
];
?>
"
/>
</td>
</tr>
<tr>
<th
colspan=
"2"
>
<?=
gettext
(
"Distinguished name"
);
?>
</th>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Country Code"
);
?>
:
</td>
<td>
<select
name=
"dn_country"
id=
"dn_country"
class=
"selectpicker"
>
<?php
foreach
(
get_country_codes
()
as
$cc
=>
$cn
)
:?>
<
option
value
=
"<?=
$cc
;?>"
<?=
$pconfig
[
'dn_country'
]
==
$cc
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$cc
;
?>
(
<?=
$cn
;
?>
)
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_dn_state"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"State or Province"
);
?>
:
</td>
<td>
<input
name=
"dn_state"
id=
"dn_state"
type=
"text"
size=
"40"
value=
"
<?=
$pconfig
[
'dn_state'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_dn_state"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"Sachsen"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_dn_city"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"City"
);
?>
:
</td>
<td>
<input
name=
"dn_city"
id=
"dn_city"
type=
"text"
size=
"40"
value=
"
<?=
$pconfig
[
'dn_city'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_dn_city"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"Leipzig"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_dn_organization"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Organization"
);
?>
:
</td>
<td>
<input
name=
"dn_organization"
id=
"dn_organization"
type=
"text"
size=
"40"
value=
"
<?=
$pconfig
[
'dn_organization'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_dn_organization"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"My Company Inc"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_dn_email"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Email Address"
);
?>
:
</td>
<td>
<input
name=
"dn_email"
id=
"dn_email"
type=
"text"
size=
"25"
value=
"
<?=
$pconfig
[
'dn_email'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_dn_email"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"admin@mycompany.com"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_dn_commonname"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Common Name"
);
?>
:
</td>
<td>
<input
name=
"dn_commonname"
id=
"dn_commonname"
type=
"text"
size=
"25"
value=
"
<?=
$pconfig
[
'dn_commonname'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_dn_commonname"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"internal-ca"
);
?>
</div>
</td>
</tr>
<tr>
<td>
<?=
gettext
(
"Alternative Names"
);
?>
</td>
<td>
<table
class=
"table table-condensed"
id=
"altNametable"
>
<thead>
<tr>
<th>
<?=
gettext
(
"Type"
);
?>
</th>
<th>
<?=
gettext
(
"Value"
);
?>
</th>
<th></th>
</tr>
</thead>
<tbody>
<?php
if
(
!
isset
(
$pconfig
[
'altname_value'
])
||
count
(
$pconfig
[
'altname_value'
])
==
0
)
:?>
<
tr
>
<
td
>
<
select
name
=
"altname_type[]"
id
=
"altname_type"
>
<
option
value
=
"DNS"
><?=
gettext
(
"DNS"
);
?>
</option>
<option
value=
"IP"
>
<?=
gettext
(
"IP"
);
?>
</option>
<option
value=
"email"
>
<?=
gettext
(
"email"
);
?>
</option>
<option
value=
"URI"
>
<?=
gettext
(
"URI"
);
?>
</option>
</select>
</td>
<td>
<input
name=
"altname_value[]"
type=
"text"
size=
"20"
value=
""
/>
</td>
<td>
<div
style=
"cursor:pointer;"
class=
"act-removerow-altnm btn btn-default btn-xs"
alt=
"remove"
><span
class=
"glyphicon glyphicon-minus"
></span></div>
</td>
</tr>
<?php
else
:
foreach
(
$pconfig
[
'altname_value'
]
as
$itemid
=>
$item
)
:
$altname_type
=
isset
(
$pconfig
[
'altname_type'
][
$itemid
])
?
$pconfig
[
'altname_type'
][
$itemid
]
:
null
;
?>
<tr>
<td>
<select
name=
"altname_type[]"
id=
"altname_type"
>
<option
value=
"DNS"
<?=
$altname_type
==
"DNS"
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
gettext
(
"DNS"
);
?>
</option>
<option
value=
"IP"
<?=
$altname_type
==
"IP"
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
gettext
(
"IP"
);
?>
</option>
<option
value=
"email"
<?=
$altname_type
==
"email"
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
gettext
(
"email"
);
?>
</option>
<option
value=
"URI"
<?=
$altname_type
==
"URI"
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
gettext
(
"URI"
);
?>
</option>
</select>
</td>
<td>
<input
name=
"altname_value[]"
type=
"text"
size=
"20"
value=
"
<?=
$item
;
?>
"
/>
</td>
<td>
<div
style=
"cursor:pointer;"
class=
"act-removerow-altnm btn btn-default btn-xs"
alt=
"remove"
><span
class=
"glyphicon glyphicon-minus"
></span></div>
</td>
</tr>
<?php
else
:
<?php
endforeach
;
endif
;
?>
</tbody>
<tfoot>
<tr>
<td
colspan=
"2"
></td>
<td>
<div
id=
"addNewAltNm"
style=
"cursor:pointer;"
class=
"btn btn-default btn-xs"
alt=
"add"
><span
class=
"glyphicon glyphicon-plus"
></span></div>
</td>
</tr>
</tfoot>
</table>
</td>
</tr>
</tbody>
</table>
<!-- external cert -->
<table
id=
"external"
class=
"table table-striped"
>
<thead>
<tr>
<td
colspan=
"2"
>
<?=
gettext
(
"External Signing Request"
);
?>
</td>
</tr>
</thead>
<tbody>
<tr>
<td
width=
"22%"
><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Key length"
);
?>
(
<?=
gettext
(
"bits"
);
?>
)
</td>
<td
width=
"78%"
>
<select
name=
'csr_keylen'
class=
"selectpicker"
>
<?php
foreach
(
$cert_keylens
as
$len
)
:?>
<
option
value
=
"<?=
$len
;?>"
<?=
$pconfig
[
'csr_keylen'
]
==
$len
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$len
;
?>
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
<tr>
<td><a
id=
"help_for_csr_digest_alg"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Digest Algorithm"
);
?>
</td>
<td>
<select
name=
'csr_digest_alg'
class=
"formselect"
>
<?php
foreach
(
$openssl_digest_algs
as
$csr_digest_alg
)
:?>
<
option
value
=
"<?=
$csr_digest_alg
;?>"
<?=
$pconfig
[
'csr_digest_alg'
]
==
$csr_digest_alg
?
$pconfig
[
'csr_digest_alg'
]
==
$csr_digest_alg
:
""
;
?>
>
<?=
strtoupper
(
$csr_digest_alg
);
?>
</option>
<?php
endforeach
;
?>
</select>
<div
class=
"hidden"
for=
"help_for_csr_digest_alg"
>
<?=
gettext
(
"NOTE: It is recommended to use an algorithm stronger than SHA1 when possible."
)
?>
</div>
</td>
</tr>
<tr>
<th
colspan=
"2"
>
<?=
gettext
(
"Distinguished name"
);
?>
</th>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Country Code"
);
?>
:
</td>
<td>
<select
name=
"csr_dn_country"
id=
"csr_dn_country"
class=
"selectpicker"
>
<?php
foreach
(
get_country_codes
()
as
$cc
=>
$cn
)
:?>
<
option
value
=
"<?=
$cc
;?>"
<?=
$pconfig
[
'csr_dn_country'
]
==
$cc
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$cc
;
?>
(
<?=
$cn
;
?>
)
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_csr_dn_state"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"State or Province"
);
?>
:
</td>
<td>
<input
name=
"csr_dn_state"
type=
"text"
size=
"40"
value=
"
<?=
$pconfig
[
'csr_dn_state'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_csr_dn_state"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"Sachsen"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_csr_dn_city"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"City"
);
?>
:
</td>
<td>
<input
name=
"csr_dn_city"
type=
"text"
size=
"40"
value=
"
<?=
$pconfig
[
'csr_dn_city'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_csr_dn_city"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"Leipzig"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_csr_dn_organization"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Organization"
);
?>
:
</td>
<td>
<input
name=
"csr_dn_organization"
type=
"text"
size=
"40"
value=
"
<?=
$pconfig
[
'csr_dn_organization'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_csr_dn_organization"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"My Company Inc"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_csr_dn_email"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Email Address"
);
?>
:
</td>
<td>
<input
name=
"csr_dn_email"
type=
"text"
size=
"25"
value=
"
<?=
$pconfig
[
'csr_dn_email'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_csr_dn_email"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"admin@mycompany.com"
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_digest_csr_dn_commonname"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Common Name"
);
?>
:
</td>
<td>
<input
name=
"csr_dn_commonname"
type=
"text"
size=
"25"
value=
"
<?=
$pconfig
[
'csr_dn_commonname'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_digest_csr_dn_commonname"
>
<em>
<?=
gettext
(
"ex:"
);
?>
</em>
<?=
gettext
(
"internal-ca"
);
?>
</div>
</td>
</tr>
</tbody>
</table>
<!-- choose existing cert -->
<table
id=
"existing"
class=
"table table-striped"
>
<thead>
<tr>
<th
colspan=
"2"
>
<?=
gettext
(
"Choose an Existing Certificate"
);
?>
</th>
</tr>
</thead>
<tbody>
<tr>
<td
width=
"22%"
><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Existing Certificates"
);
?>
</td>
<td
width=
"78%"
>
<select
name=
'certref'
class=
"formselect"
>
<?php
foreach
(
$config
[
'cert'
]
as
$cert
)
:
$caname
=
""
;
$usercert
=
isset
(
$config
[
'system'
][
'user'
][
$userid
][
'cert'
])
?
$config
[
'system'
][
'user'
][
$userid
][
'cert'
]
:
array
();
if
(
isset
(
$userid
)
&&
in_array
(
$cert
[
'refid'
],
$usercert
))
{
continue
;
}
if
(
isset
(
$cert
[
'caref'
]))
{
$ca
=
lookup_ca
(
$cert
[
'caref'
]);
if
(
$ca
)
{
$caname
=
" (CA:
{
$ca
[
'descr'
]
}
)"
;
}
}
?>
<option
value=
"
<?=
$cert
[
'refid'
];
?>
"
<?=
isset
(
$pconfig
[
'certref'
])
&&
isset
(
$cert
[
'refid'
])
&&
$pconfig
[
'certref'
]
==
$cert
[
'refid'
]
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$cert
[
'descr'
];
?>
<?=
$caname
;
?>
<?=
isset
(
$cert
[
'refid'
])
&&
cert_in_use
(
$cert
[
'refid'
])
?
gettext
(
"*In Use"
)
:
""
;
?>
<?=
is_cert_revoked
(
$cert
)
?
gettext
(
"*Revoked"
)
:
""
;
?>
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
</tbody>
</table>
<!-- submit -->
<table
class=
"table"
>
<tr>
<td
width=
"22%"
>
</td>
<td
width=
"78%"
>
<input
id=
"submit"
name=
"save"
type=
"submit"
class=
"btn btn-primary"
value=
"
<?=
gettext
(
"Save"
);
?>
"
/>
</td>
</tr>
</table>
</form>
<?php
elseif
(
$act
==
"csr"
)
:
?>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Certificate authority"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<select
name=
'caref'
id=
'caref'
class=
"formselect"
onchange=
'internalca_change()'
>
<?php
foreach
(
$a_ca
as
$ca
)
:
if
(
!
$ca
[
'prv'
])
{
continue
;
}
$selected
=
""
;
if
(
isset
(
$pconfig
[
'caref'
])
&&
isset
(
$ca
[
'refid'
])
&&
$pconfig
[
'caref'
]
==
$ca
[
'refid'
])
{
$selected
=
" selected=
\"
selected
\"
"
;
}
?>
<option
value=
"
<?=
$ca
[
'refid'
];
?>
"
<?=
$selected
;
?>
>
<?=
$ca
[
'descr'
];
?>
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Key length"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<select
name=
'keylen'
class=
"formselect"
>
<?php
foreach
(
$cert_keylens
as
$len
)
:
$selected
=
""
;
if
(
$pconfig
[
'keylen'
]
==
$len
)
{
$selected
=
" selected=
\"
selected
\"
"
;
}
?>
<option
value=
"
<?=
$len
;
?>
"
<?=
$selected
;
?>
>
<?=
$len
;
?>
</option>
<?php
endforeach
;
?>
</select>
<?=
gettext
(
"bits"
);
?>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Digest Algorithm"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<select
name=
'digest_alg'
id=
'digest_alg'
class=
"formselect"
>
<?php
foreach
(
$openssl_digest_algs
as
$digest_alg
)
:
$selected
=
""
;
if
(
$pconfig
[
'digest_alg'
]
==
$digest_alg
)
{
$selected
=
" selected=
\"
selected
\"
"
;
}
?>
<option
value=
"
<?=
$digest_alg
;
?>
"
<?=
$selected
;
?>
>
<?=
strtoupper
(
$digest_alg
);
?>
</option>
<?php
endforeach
;
?>
</select>
<br
/>
<?=
gettext
(
"NOTE: It is recommended to use an algorithm stronger than SHA1 when possible."
)
?>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Lifetime"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<input
name=
"lifetime"
type=
"text"
class=
"formfld unknown"
id=
"lifetime"
size=
"5"
value=
"
<?=
htmlspecialchars
(
$pconfig
[
'lifetime'
]);
?>
"
/>
<?=
gettext
(
"days"
);
?>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Distinguished name"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<table
border=
"0"
cellspacing=
"0"
cellpadding=
"2"
summary=
"name"
>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Country Code"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"dn_country"
type=
"text"
class=
"formfld unknown"
maxlength=
"2"
size=
"2"
value=
"
<?php
if
(
isset
(
$pconfig
[
'dn_country'
]))
echo
htmlspecialchars
(
$pconfig
[
'dn_country'
]);
?>
"
/>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"State or Province"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"dn_state"
type=
"text"
class=
"formfld unknown"
size=
"40"
value=
"
<?php
if
(
isset
(
$pconfig
[
'dn_state'
]))
echo
htmlspecialchars
(
$pconfig
[
'dn_state'
]);
?>
"
/>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"City"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"dn_city"
type=
"text"
class=
"formfld unknown"
size=
"40"
value=
"
<?php
if
(
isset
(
$pconfig
[
'dn_city'
]))
echo
htmlspecialchars
(
$pconfig
[
'dn_city'
]);
?>
"
/>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Organization"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"dn_organization"
type=
"text"
class=
"formfld unknown"
size=
"40"
value=
"
<?php
if
(
isset
(
$pconfig
[
'dn_organization'
]))
echo
htmlspecialchars
(
$pconfig
[
'dn_organization'
]);
?>
"
/>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Email Address"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"dn_email"
type=
"text"
class=
"formfld unknown"
size=
"25"
value=
"
<?php
if
(
isset
(
$pconfig
[
'dn_email'
]))
echo
htmlspecialchars
(
$pconfig
[
'dn_email'
]);
?>
"
/>
<em>
ex:
</em>
<?=
gettext
(
"webadmin@mycompany.com"
);
?>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Common Name"
);
?>
:
</td>
<td
align=
"left"
>
<?php
if
(
isset
(
$a_user
)
&&
empty
(
$pconfig
[
'dn_commonname'
]))
{
$pconfig
[
'dn_commonname'
]
=
$a_user
[
$userid
][
'name'
];
}
?>
<input
name=
"dn_commonname"
type=
"text"
class=
"formfld unknown"
size=
"25"
value=
"
<?php
if
(
isset
(
$pconfig
[
'dn_commonname'
]))
htmlspecialchars
(
$pconfig
[
'dn_commonname'
]);
?>
"
/>
<em>
ex:
</em>
<?=
gettext
(
"www.example.com"
);
?>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Alternative Names"
);
?>
:
</td>
<td
align=
"left"
>
<table
id=
"altNametable"
>
<thead>
<tr>
<th><div
id=
"onecolumn"
>
<?=
gettext
(
"Type"
);
?>
</div></th>
<th><div
id=
"twocolumn"
>
<?=
gettext
(
"Value"
);
?>
</div></th>
</tr>
</thead>
<tbody>
<?php
$counter
=
0
;
if
(
isset
(
$pconfig
[
'altnames'
][
'item'
]))
:
foreach
(
$pconfig
[
'altnames'
][
'item'
]
as
$item
)
:
$type
=
$item
[
'type'
];
$value
=
$item
[
'value'
];
?>
<tr>
<td>
<input
autocomplete=
"off"
name=
"altname_type
<?php
echo
$counter
;
?>
"
type=
"text"
class=
"formfld unknown"
id=
"altname_type
<?php
echo
$counter
;
?>
"
size=
"20"
value=
"
<?=
htmlspecialchars
(
$type
);
?>
"
/>
</td>
<td>
<input
autocomplete=
"off"
name=
"altname_value
<?php
echo
$counter
;
?>
"
type=
"text"
class=
"formfld unknown"
id=
"altname_value
<?php
echo
$counter
;
?>
"
size=
"20"
value=
"
<?=
htmlspecialchars
(
$value
);
?>
"
/>
</td>
<td>
<a
onclick=
"removeRow(this); return false;"
href=
"#"
title=
"
<?=
gettext
(
"remove this entry"
);
?>
"
class=
"btn btn-default btn-xs"
><span
class=
"glyphicon glyphicon-remove"
></span></a>
</td>
</tr>
<?php
$counter
++
;
endforeach
;
endif
;
?>
<tr><td>
</td></tr>
</tbody>
</table>
<a
onclick=
"javascript:addRowTo('altNametable', 'formfldalias'); return false;"
href=
"#"
title=
"
<?=
gettext
(
"add another entry"
);
?>
"
class=
"btn btn-default btn-xs"
><span
class=
"glyphicon glyphicon-plus"
></span></a>
<script
type=
"text/javascript"
>
//
<!
[
CDATA
[
field_counter_js
=
3
;
rows
=
1
;
totalrows
=
<?php
echo
$counter
;
?>
;
loaded
=
<?php
echo
$counter
;
?>
;
//]]>
</script>
<br
/>
<?=
gettext
(
'NOTE: Type must be one of DNS (FQDN or Hostname), IP (IP address), URI, or email.'
)
?>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
<?php
endif
;
?>
</table>
<table
width=
"100%"
border=
"0"
cellpadding=
"6"
cellspacing=
"0"
id=
"external"
summary=
"external"
class=
"table table-striped"
>
<thead>
<tr>
<td
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"External Signing Request"
);
?>
</td>
</tr>
</thead>
<tbody>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Key length"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<select
name=
'csr_keylen'
class=
"formselect"
>
<?php
if
(
!
isset
(
$pconfig
[
'csr_keylen'
])
&&
isset
(
$pconfig
[
'csr_keylen'
]))
{
$pconfig
[
'csr_keylen'
]
=
$pconfig
[
'csr_keylen'
];
}
foreach
(
$cert_keylens
as
$len
)
:
$selected
=
""
;
if
(
$pconfig
[
'csr_keylen'
]
==
$len
)
{
$selected
=
" selected=
\"
selected
\"
"
;
}
?>
<option
value=
"
<?=
$len
;
?>
"
<?=
$selected
;
?>
>
<?=
$len
;
?>
</option>
<?php
endforeach
;
?>
</select>
bits
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Digest Algorithm"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<select
name=
'csr_digest_alg'
id=
'csr_digest_alg'
class=
"formselect"
>
<?php
foreach
(
$openssl_digest_algs
as
$csr_digest_alg
)
:
$selected
=
""
;
if
(
$pconfig
[
'csr_digest_alg'
]
==
$csr_digest_alg
)
{
$selected
=
" selected=
\"
selected
\"
"
;
}
?>
<option
value=
"
<?=
$csr_digest_alg
;
?>
"
<?=
$selected
;
?>
>
<?=
strtoupper
(
$csr_digest_alg
);
?>
</option>
<?php
endforeach
;
?>
</select>
<br
/>
<?=
gettext
(
"NOTE: It is recommended to use an algorithm stronger than SHA1 when possible."
)
?>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Distinguished name"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<table
border=
"0"
cellspacing=
"0"
cellpadding=
"2"
summary=
"name"
>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Country Code"
);
?>
:
</td>
<td
align=
"left"
>
<select
name=
'csr_dn_country'
class=
"formselect"
>
<?php
$dn_cc
=
get_country_codes
();
foreach
(
$dn_cc
as
$cc
=>
$cn
)
{
$selected
=
''
;
if
(
isset
(
$pconfig
[
'csr_dn_country'
])
&&
$pconfig
[
'csr_dn_country'
]
==
$cc
)
{
$selected
=
' selected="selected"'
;
}
print
"<option value=
\"
$cc
\"
$selected
>
$cc
(
$cn
)</option>"
;
}
?>
</select>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"State or Province"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"csr_dn_state"
type=
"text"
class=
"formfld unknown"
size=
"40"
value=
"
<?php
if
(
isset
(
$pconfig
[
'csr_dn_state'
]))
echo
htmlspecialchars
(
$pconfig
[
'csr_dn_state'
]);
?>
"
/>
<em>
ex:
</em>
<?=
gettext
(
"Sachsen"
);
?>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"City"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"csr_dn_city"
type=
"text"
class=
"formfld unknown"
size=
"40"
value=
"
<?php
if
(
isset
(
$pconfig
[
'csr_dn_city'
]))
echo
htmlspecialchars
(
$pconfig
[
'csr_dn_city'
]);
?>
"
/>
<em>
ex:
</em>
<?=
gettext
(
"Leipzig"
);
?>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Organization"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"csr_dn_organization"
type=
"text"
class=
"formfld unknown"
size=
"40"
value=
"
<?php
if
(
isset
(
$pconfig
[
'csr_dn_organization'
]))
echo
htmlspecialchars
(
$pconfig
[
'csr_dn_organization'
]);
?>
"
/>
<em>
ex:
</em>
<?=
gettext
(
"My Company Inc."
);
?>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Email Address"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"csr_dn_email"
type=
"text"
class=
"formfld unknown"
size=
"25"
value=
"
<?php
if
(
isset
(
$pconfig
[
'csr_dn_email'
]))
echo
htmlspecialchars
(
$pconfig
[
'csr_dn_email'
]);
?>
"
/>
<em>
ex:
</em>
<?=
gettext
(
"webadmin@mycompany.com"
);
?>
</td>
</tr>
<tr>
<td
align=
"right"
>
<?=
gettext
(
"Common Name"
);
?>
:
</td>
<td
align=
"left"
>
<input
name=
"csr_dn_commonname"
type=
"text"
class=
"formfld unknown"
size=
"25"
value=
"
<?php
if
(
isset
(
$pconfig
[
'csr_dn_commonname'
]))
echo
htmlspecialchars
(
$pconfig
[
'csr_dn_commonname'
]);
?>
"
/>
<em>
ex:
</em>
<?=
gettext
(
"www.example.com"
);
?>
</td>
</tr>
</table>
</td>
</tr>
</tbody>
</table>
<table
width=
"100%"
border=
"0"
cellpadding=
"6"
cellspacing=
"0"
id=
"existing"
summary=
"existing"
class=
"table table-striped"
>
<thead>
<tr>
<th
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"Choose an Existing Certificate"
);
?>
</th>
</tr>
</thead>
<tbody>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Existing Certificates"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<?php
if
(
isset
(
$userid
)
&&
$a_user
)
:
?>
<input
name=
"userid"
type=
"hidden"
value=
"
<?=
htmlspecialchars
(
$userid
);
?>
"
/>
<?php
endif
;
?>
<select
name=
'certref'
class=
"formselect"
>
<?php
foreach
(
$config
[
'cert'
]
as
$cert
)
:
$selected
=
""
;
$caname
=
""
;
$inuse
=
""
;
$revoked
=
""
;
$usercert
=
isset
(
$config
[
'system'
][
'user'
][
$userid
][
'cert'
])
?
$config
[
'system'
][
'user'
][
$userid
][
'cert'
]
:
array
();
if
(
isset
(
$userid
)
&&
in_array
(
$cert
[
'refid'
],
$usercert
))
{
continue
;
}
if
(
isset
(
$cert
[
'caref'
]))
{
$ca
=
lookup_ca
(
$cert
[
'caref'
]);
if
(
$ca
)
{
$caname
=
" (CA:
{
$ca
[
'descr'
]
}
)"
;
}
}
else
{
$ca
=
null
;
}
if
(
isset
(
$pconfig
[
'certref'
])
&&
isset
(
$cert
[
'refid'
])
&&
$pconfig
[
'certref'
]
==
$cert
[
'refid'
])
{
$selected
=
" selected=
\"
selected
\"
"
;
}
if
(
isset
(
$cert
[
'refid'
])
&&
cert_in_use
(
$cert
[
'refid'
]))
{
$inuse
=
" *In Use"
;
}
if
(
is_cert_revoked
(
$cert
))
{
$revoked
=
" *Revoked"
;
}
?>
<option
value=
"
<?=
$cert
[
'refid'
];
?>
"
<?=
$selected
;
?>
>
<?=
$cert
[
'descr'
]
.
$caname
.
$inuse
.
$revoked
;
?>
</option>
<?php
endforeach
;
?>
</select>
</td>
</tr>
</tbody>
</table>
<table
width=
"100%"
border=
"0"
cellpadding=
"6"
cellspacing=
"0"
summary=
"save"
class=
"table"
>
<tr>
<td
width=
"22%"
valign=
"top"
>
</td>
<td
width=
"78%"
>
<input
id=
"submit"
name=
"save"
type=
"submit"
class=
"btn btn-primary"
value=
"
<?=
gettext
(
"Save"
);
?>
"
/>
<?php
if
(
isset
(
$id
)
&&
$a_cert
[
$id
])
:
?>
<input
name=
"id"
type=
"hidden"
value=
"
<?=
htmlspecialchars
(
$id
);
?>
"
/>
<?php
endif
;
?>
</td>
</tr>
</table>
</form>
<?php
elseif
(
$act
==
"csr"
||
((
isset
(
$_POST
[
'save'
])
&&
$_POST
[
'save'
]
==
gettext
(
"Update"
))
&&
$input_errors
))
:
?>
<form
action=
"system_certmanager.php"
method=
"post"
name=
"iform"
id=
"iform"
>
<input
name=
"act"
type=
"hidden"
value=
"csr"
/>
<?php
if
(
isset
(
$id
))
:?>
<
input
name
=
"id"
type
=
"hidden"
value
=
"<?=htmlspecialchars(
$id
);?>"
/>
<?
php
endif
;
?>
<table
class=
"table table-striped"
>
<tr>
<td
width=
"22%"
><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Descriptive name"
);
?>
</td>
<td
width=
"78%"
>
<input
name=
"descr"
type=
"text"
id=
"descr"
readonly=
"readonly"
value=
"
<?=
$pconfig
[
'descr'
];
?>
"
/>
</td>
</tr>
<tr>
<td
colspan=
"2"
class=
"list"
height=
"12"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
<?=
gettext
(
"Complete Signing Request"
);
?>
</td>
</tr>
<tr>
<td>
<?=
gettext
(
"Signing request data"
);
?>
</td>
<td>
<textarea
name=
"csr"
id=
"csr"
cols=
"65"
rows=
"7"
class=
"formfld_cert"
readonly=
"readonly"
>
<?=
$pconfig
[
'csr'
];
?>
</textarea>
<br
/>
<?=
gettext
(
"Copy the certificate signing data from here and forward it to your certificate authority for signing."
);
?>
</td>
</td>
</tr>
<tr>
<td>
<?=
gettext
(
"Final certificate data"
);
?>
</td>
<td>
<textarea
name=
"cert"
id=
"cert"
cols=
"65"
rows=
"7"
class=
"formfld_cert"
>
<?=
$pconfig
[
'cert'
];
?>
</textarea>
<br
/>
<?=
gettext
(
"Paste the certificate received from your certificate authority here."
);
?>
</td>
</td>
</tr>
<tr>
<td>
</td>
<td>
<input
id=
"submit"
name=
"update"
type=
"submit"
class=
"btn btn-primary"
value=
"
<?=
gettext
(
"Update"
);
?>
"
/>
</td>
</tr>
</table>
</form>
<?php
else
:?>
<
form
action
=
"system_certmanager.php"
method
=
"post"
name
=
"iform"
id
=
"iform"
>
<
input
type
=
"hidden"
name
=
"id"
id
=
"id"
value
=
"<?=isset(
$id
) ?
$id
:"";?>"
/>
<
input
type
=
"hidden"
name
=
"act"
id
=
"action"
value
=
"<?=
$act
;?>"
/>
</
form
>
<
table
summary
=
"details"
class
="
table
table
-
striped
">
<thead>
<tr>
<th><?=gettext("
Name
");?></th>
<th><?=gettext("
Issuer
");?></th>
<th><?=gettext("
Distinguished
Name
");?></th>
<th><?=gettext("
In
Use
");?></th>
</tr>
</thead>
<tbody>
<?php
$i
= 0;
foreach (
$a_cert
as
$cert
) :
$name
= htmlspecialchars(
$cert['descr']
);
$purpose
= null;
if (!empty(
$cert['crt']
)) {
$subj
= cert_get_subject(
$cert['crt']
);
$issuer
= cert_get_issuer(
$cert['crt']
);
$purpose
= cert_get_purpose(
$cert['crt']
);
list(
$startdate
,
$enddate
) = cert_get_dates(
$cert['crt']
);
if (
$subj
==
$issuer
) {
$caname
= "
<
em
>
" . gettext("
self
-
signed
") . "
</
em
>
";
} else {
$caname
= "
<
em
>
" . gettext("
external
"). "
</
em
>
";
}
$subj
= htmlspecialchars(
$subj
);
}
if (isset(
$cert['csr']
)) {
$subj
= htmlspecialchars(csr_get_subject(
$cert['csr']
));
$caname
= "
<
em
>
" . gettext("
external
-
signature
pending
") . "
</
em
>
";
}
if (isset(
$cert['caref']
)) {
$ca
= lookup_ca(
$cert['caref']
);
if (
$ca
) {
$caname
=
$ca['descr']
;
}
}?>
<tr>
<td>
<span class="
glyphicon
glyphicon
-
certificate
__iconspacer
"></span>
<?=
$name
;?>
<?php
if (is_array(
$purpose
)) :?>
<br/><br/>
<?=gettext('CA:') ?> <?=
$purpose['ca']
; ?>,
<?=gettext('Server:') ?> <?=
$purpose['server']
; ?>
<?php
endif; ?>
</td>
<td><?=
$caname
;?> </td>
<td><?=
$subj
;?> <br />
<table summary="
valid
">
<tr>
<td width="
10
%
"> </td>
<td width="
20
%
"><?=gettext("
Valid
From
")?>:</td>
<td width="
70
%
"><?=
$startdate
?></td>
</tr>
<tr>
<td> </td>
<td><?=gettext("
Valid
Until
")?>:</td>
<td><?=
$enddate
?></td>
</tr>
</table>
</td>
<td>
<?php
if (is_cert_revoked(
$cert
)) :?>
<b><?=gettext('Revoked') ?></b><br />
<?php
endif;
if (is_webgui_cert(
$cert['refid']
)) :?>
<?=gettext('webConfigurator') ?><br />
<?php
endif;
if (is_user_cert(
$cert['refid']
)) :?>
<?=gettext('User Cert') ?><br />
<?php
endif;
if (is_openvpn_server_cert(
$cert['refid']
)) :?>
<?=gettext('OpenVPN Server') ?><br />
<?php
endif;
if (is_openvpn_client_cert(
$cert['refid']
)) :?>
<?=gettext('OpenVPN Client') ?><br />
<?php
endif;
if (is_ipsec_cert(
$cert['refid']
)) :?>
<?=gettext('IPsec Tunnel') ?><br />
<?php
endif; ?>
<form
action=
"system_certmanager.php"
method=
"post"
name=
"iform"
id=
"iform"
>
<table
width=
"100%"
border=
"0"
cellpadding=
"6"
cellspacing=
"0"
summary=
"name"
class=
"table table-striped"
>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Descriptive name"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<input
name=
"descr"
type=
"text"
class=
"formfld unknown"
id=
"descr"
size=
"20"
value=
"
<?=
htmlspecialchars
(
$pconfig
[
'descr'
]);
?>
"
/>
</td>
</tr>
<tr>
<td
colspan=
"2"
class=
"list"
height=
"12"
></td>
</tr>
<tr>
<td
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"Complete Signing Request"
);
?>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Signing request data"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<textarea
name=
"csr"
id=
"csr"
cols=
"65"
rows=
"7"
class=
"formfld_cert"
readonly=
"readonly"
>
<?=
htmlspecialchars
(
$pconfig
[
'csr'
]);
?>
</textarea>
<br
/>
<?=
gettext
(
"Copy the certificate signing data from here and forward it to your certificate authority for signing."
);
?>
</td>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Final certificate data"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
>
<textarea
name=
"cert"
id=
"cert"
cols=
"65"
rows=
"7"
class=
"formfld_cert"
>
<?=
htmlspecialchars
(
$pconfig
[
'cert'
]);
?>
</textarea>
<br
/>
<?=
gettext
(
"Paste the certificate received from your certificate authority here."
);
?>
</td>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
>
</td>
<td
width=
"78%"
>
<?php
/* if ( isset($subject_mismatch) && $subject_mismatch === true): ?>
<input id="ignoresubjectmismatch" name="ignoresubjectmismatch" type="checkbox" class="formbtn" value="yes" />
<label for="ignoresubjectmismatch"><strong><?=gettext("Ignore certificate subject mismatch"); ?></strong></label><br />
<?php echo gettext("Warning: Using this option may create an " .
"invalid certificate. Check this box to disable the request -> " .
"response subject verification. ");
?><br />
<?php endif; */
?>
<input
id=
"submit"
name=
"save"
type=
"submit"
class=
"btn btn-primary"
value=
"
<?=
gettext
(
"Update"
);
?>
"
/>
<?php
if
(
isset
(
$id
)
&&
$a_cert
[
$id
])
:
?>
<input
name=
"id"
type=
"hidden"
value=
"
<?=
htmlspecialchars
(
$id
);
?>
"
/>
<input
name=
"act"
type=
"hidden"
value=
"csr"
/>
<?php
endif
;
?>
</td>
</tr>
</table>
</form>
<?php
else
:
?>
<table
summary=
"details"
class=
"table table-striped"
>
<thead>
<tr>
<td
width=
"15%"
class=
"listhdrr"
>
<?=
gettext
(
"Name"
);
?>
</td>
<td
width=
"15%"
class=
"listhdrr"
>
<?=
gettext
(
"Issuer"
);
?>
</td>
<td
width=
"40%"
class=
"listhdrr"
>
<?=
gettext
(
"Distinguished Name"
);
?>
</td>
<td
width=
"10%"
class=
"listhdrr"
>
<?=
gettext
(
"In Use"
);
?>
</td>
</tr>
</thead>
<tbody>
<?php
$i
=
0
;
foreach
(
$a_cert
as
$cert
)
:
$name
=
htmlspecialchars
(
$cert
[
'descr'
]);
if
(
$cert
[
'crt'
])
{
$subj
=
cert_get_subject
(
$cert
[
'crt'
]);
$issuer
=
cert_get_issuer
(
$cert
[
'crt'
]);
$purpose
=
cert_get_purpose
(
$cert
[
'crt'
]);
list
(
$startdate
,
$enddate
)
=
cert_get_dates
(
$cert
[
'crt'
]);
if
(
$subj
==
$issuer
)
{
$caname
=
"<em>"
.
gettext
(
"self-signed"
)
.
"</em>"
;
}
else
{
$caname
=
"<em>"
.
gettext
(
"external"
)
.
"</em>"
;
}
$subj
=
htmlspecialchars
(
$subj
);
}
if
(
isset
(
$cert
[
'csr'
]))
{
$subj
=
htmlspecialchars
(
csr_get_subject
(
$cert
[
'csr'
]));
$caname
=
"<em>"
.
gettext
(
"external - signature pending"
)
.
"</em>"
;
}
if
(
isset
(
$cert
[
'caref'
]))
{
$ca
=
lookup_ca
(
$cert
[
'caref'
]);
if
(
$ca
)
{
$caname
=
$ca
[
'descr'
];
}
}
$certimg
=
'<span class="glyphicon glyphicon-certificate __iconspacer"></span>'
;
?>
<tr>
<td
class=
"listlr"
>
<table
summary=
"icon"
>
<tr>
<td
align=
"left"
valign=
"middle"
>
<?=
$certimg
;
?>
</td>
<td
align=
"left"
valign=
"middle"
>
<?=
$name
;
?>
</td>
</tr>
<tr><td>
</td></tr>
<?php
if
(
is_array
(
$purpose
))
:
?>
<tr><td
colspan=
"2"
>
<?=
gettext
(
'CA:'
)
?>
<?php
echo
$purpose
[
'ca'
];
?>
,
<?=
gettext
(
'Server:'
)
?>
<?php
echo
$purpose
[
'server'
];
?>
</td></tr>
<?php
endif
;
?>
</table>
</td>
<td
class=
"listr"
>
<?=
$caname
;
?>
</td>
<td
class=
"listr"
>
<?=
$subj
;
?>
<br
/>
<table
summary=
"valid"
>
<tr>
<td
width=
"10%"
>
</td>
<td
width=
"20%"
>
<?=
gettext
(
"Valid From"
)
?>
:
</td>
<td
width=
"70%"
>
<?=
$startdate
?>
</td>
</tr>
<tr>
<td>
</td>
<td>
<?=
gettext
(
"Valid Until"
)
?>
:
</td>
<td>
<?=
$enddate
?>
</td>
</tr>
</table>
</td>
<td
class=
"listr"
>
<?php
if
(
is_cert_revoked
(
$cert
))
:
?>
<b>
<?=
gettext
(
'Revoked'
)
?>
</b><br
/>
<?php
endif
;
?>
<?php
if
(
is_webgui_cert
(
$cert
[
'refid'
]))
:
?>
<?=
gettext
(
'webConfigurator'
)
?>
<br
/>
<?php
endif
;
?>
<?php
if
(
is_user_cert
(
$cert
[
'refid'
]))
:
?>
<?=
gettext
(
'User Cert'
)
?>
<br
/>
<?php
endif
;
?>
<?php
if
(
is_openvpn_server_cert
(
$cert
[
'refid'
]))
:
?>
<?=
gettext
(
'OpenVPN Server'
)
?>
<br
/>
<?php
endif
;
?>
<?php
if
(
is_openvpn_client_cert
(
$cert
[
'refid'
]))
:
?>
<?=
gettext
(
'OpenVPN Client'
)
?>
<br
/>
<?php
endif
;
?>
<?php
if
(
is_ipsec_cert
(
$cert
[
'refid'
]))
:
?>
<?=
gettext
(
'IPsec Tunnel'
)
?>
<br
/>
<?php
endif
;
?>
<?php
if
(
is_captiveportal_cert
(
$cert
[
'refid'
]))
:
?>
Captive Portal
<br
/>
<?php
endif
;
?>
<a
href=
"system_certmanager.php?act=exp&id=
<?=
$i
;
?>
"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
data-placement=
"left"
title=
"
<?=
gettext
(
"export ca"
);
?>
"
>
<span
class=
"glyphicon glyphicon-download"
></span>
</a>
<a
href=
"system_certmanager.php?act=key&id=
<?=
$i
;
?>
"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
data-placement=
"left"
title=
"
<?=
gettext
(
"export key"
);
?>
"
>
<span
class=
"glyphicon glyphicon-download"
></span>
</a>
<a
href=
"system_certmanager.php?act=p12&id=
<?=
$i
;
?>
"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
data-placement=
"left"
title=
"
<?=
gettext
(
"export ca cert+user cert+user cert key in .p12 format"
);
?>
"
>
<span
class=
"glyphicon glyphicon-download"
></span>
</a>
<?php
if
(
!
cert_in_use
(
$cert
[
'refid'
]))
:
?>
<a href="
system_certmanager
.
php
?
act
=
exp
&
amp
;
id
=<?=
$i
;
?>
" class="btn btn-default btn-xs" data-toggle="tooltip" data-placement="left" title="
<?=
gettext
(
"export ca"
);
?>
">
<span
class=
"glyphicon glyphicon-download"
></span>
</a>
<a
href=
"system_certmanager.php?act=del&id=
<?=
$i
;
?>
"
class=
"btn btn-default btn-xs"
onclick=
"return confirm('
<?=
gettext
(
"Do you really want to delete this Certificate?"
);
?>
')"
data-toggle=
"tooltip"
data-placement=
"left"
title=
"
<?=
gettext
(
"delete cert"
);
?>
"
>
<span
class=
"glyphicon glyphicon-remove"
></span>
</a>
<a
href=
"system_certmanager.php?act=key&id=
<?=
$i
;
?>
"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
data-placement=
"left"
title=
"
<?=
gettext
(
"export key"
);
?>
"
>
<span
class=
"glyphicon glyphicon-download"
></span>
</a>
<?php
endif
;
?>
<?php
if
(
isset
(
$cert
[
'csr'
]))
:
?>
<a
href=
"system_certmanager.php?act=p12&id=
<?=
$i
;
?>
"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
data-placement=
"left"
title=
"
<?=
gettext
(
"export ca cert+user cert+user cert key in .p12 format"
);
?>
"
>
<span
class=
"glyphicon glyphicon-download"
></span>
</a>
<?php
if
(
!
cert_in_use
(
$cert
[
'refid'
]))
:?>
<a
href=
"system_certmanager.php?act=csr&id=
<?=
$i
;
?>
"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
data-placement=
"left"
title=
"
<?=
gettext
(
"update csr"
);
?>
"
>
<span
class=
"glyphicon glyphicon-edit"
></span>
</a>
<?php
endif
;
?>
</td>
</tr>
<?php
$i
++
;
endforeach
;
?>
<tr>
<td>
</td>
<td
colspan=
"3"
>
<?=
gettext
(
"Note: You can only delete a certificate if it is not currently in use."
);
?>
</td>
</tr>
</tbody>
</table>
<?php
endif
;
?>
</div>
</section>
</div>
</div>
<
a
id
=
"del_<?=
$i
;?>"
data
-
id
=
"<?=
$i
;?>"
title
=
"<?=gettext("
delete
cert
"); ?>"
data
-
toggle
=
"tooltip"
class
="
act_delete
btn
btn
-
default
btn
-
xs
">
<span class="
glyphicon
glyphicon
-
remove
"></span>
</a>
<?php
endif;
if (isset(
$cert['csr']
)) :?>
<a href="
system_certmanager
.
php
?
act
=
csr
&
amp
;
id
=<?=
$i
;
?>
" class="btn btn-default btn-xs" data-toggle="tooltip" data-placement="left" title="
<?=
gettext
(
"update csr"
);
?>
">
<span
class=
"glyphicon glyphicon-edit"
></span>
</a>
<?php
endif
;
?>
</td>
</tr>
<?php
$i
++
;
endforeach
;
?>
<tr>
<td>
</td>
<td
colspan=
"3"
>
<?=
gettext
(
"Note: You can only delete a certificate if it is not currently in use."
);
?>
</td>
</tr>
</tbody>
</table>
<?php
endif
;
?>
</div>
</section>
</div>
</div>
</section>
<script
type=
"text/javascript"
>
//
<!
[
CDATA
[
method_change
();
internalca_change
();
//]]>
</script>
<?php
include
(
"foot.inc"
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment