1 |
jcrisp |
1.1 |
# $Id: phpki-ng.spec,v 1.4 2018/11/17 13:20:42 jcrisp Exp $ |
2 |
|
|
# Authority: vip-ire |
3 |
|
|
# Name: Daniel Berteaud |
4 |
|
|
|
5 |
|
|
%define name phpki-ng |
6 |
|
|
%define version 0.84 |
7 |
jpp |
1.17 |
%define release 16 |
8 |
jcrisp |
1.1 |
Summary: Phpki is a simple certificate management suite |
9 |
|
|
Name: %{name} |
10 |
|
|
Version: %{version} |
11 |
|
|
Release: %{release}%{?dist} |
12 |
|
|
License: GNU GPL version 2 |
13 |
|
|
URL: http://sourceforge.net/projects/phpki/ |
14 |
|
|
Group: SMEserver/addon |
15 |
|
|
#wget http://www.fooweb.com/downloads/foo-3.6.431.tar.gz |
16 |
|
|
Source: %{name}-%{version}.tar.gz |
17 |
jcrisp |
1.2 |
Patch1: phpki-ng-0.84-fix-for-php74-code-tidy.patch |
18 |
jcrisp |
1.3 |
Patch2: phpki-ng-0.84-fix-pregmatch-revoke-certs.patch |
19 |
jcrisp |
1.4 |
Patch3: phpki-ng-0.84-fix-crl.patch |
20 |
jcrisp |
1.5 |
Patch4: phpki-ng-0.84-fix-missing-slash-certtype-detection.patch |
21 |
jcrisp |
1.7 |
Patch5: phpki-ng-0.84-fix-html-directory-check.patch |
22 |
jcrisp |
1.8 |
Patch6: phpki-ng-0.84-fix-download-cert.patch |
23 |
jcrisp |
1.12 |
Patch7: phpki-ng-0.84-fix-html-syntax-in-help.patch |
24 |
jcrisp |
1.13 |
Patch8: phpki-ng-0.84-fix-final-redirect.patch |
25 |
jpp |
1.15 |
Patch9: phpki-ng-bz12272-bz12273-crl-whitespacepass.patch |
26 |
jpp |
1.16 |
Patch10: phpki-ng-bz12274-regex-secu.patch |
27 |
jcrisp |
1.1 |
|
28 |
|
|
BuildArch: noarch |
29 |
|
|
BuildRoot: /var/tmp/%{name}-%{version} |
30 |
|
|
|
31 |
|
|
BuildRequires: e-smith-devtools |
32 |
|
|
|
33 |
jcrisp |
1.2 |
Requires: e-smith-release >= 10.0 |
34 |
|
|
Requires: php74-php-fpm |
35 |
jcrisp |
1.1 |
Requires: openssl |
36 |
|
|
Requires: openvpn |
37 |
|
|
Conflicts: phpki |
38 |
|
|
AutoReqProv: no |
39 |
|
|
|
40 |
|
|
%description |
41 |
|
|
http://sourceforge.net/projects/phpki/ |
42 |
|
|
https://github.com/radicand/phpki |
43 |
jcrisp |
1.2 |
https://github.com/reetp/phpki |
44 |
jcrisp |
1.1 |
PHPki is an Open Source Web application for managing a multi-agency PKI for HIPAA compliance. |
45 |
|
|
With it, you may create and centrally manage X.509 certificates for use with S/MIME enabled |
46 |
|
|
e-mail clients, SSL servers, and VPN applications. |
47 |
|
|
|
48 |
|
|
%changelog |
49 |
jpp |
1.17 |
* Sat Dec 17 2022 Jean-Philippe Pialasse <tests@pialasse.com> 0.84-16.sme |
50 |
|
|
- add dl_crl_pem.php [SME: 12272] |
51 |
|
|
|
52 |
jpp |
1.16 |
* Wed Dec 14 2022 Jean-Philippe Pialasse <tests@pialasse.com> 0.84-15.sme |
53 |
|
|
- fix regex and potential code injection [SME: 12274] |
54 |
|
|
|
55 |
jpp |
1.15 |
* Wed Dec 14 2022 Jean-Philippe Pialasse <tests@pialasse.com> 0.84-14.sme |
56 |
|
|
- add easy and safe access to crl download [SME: 12272] |
57 |
|
|
- fix revoke certificate failing on whitespace pass [SME: 12273] |
58 |
|
|
- fix missing default_md in config.php from previous versions [SME: 12267] |
59 |
|
|
- updated scriptlet to ease backup and restore |
60 |
|
|
|
61 |
|
|
* Fri Nov 18 2022 Jean-Philippe Pialasse <tests@pialasse.com> 0.84-13.sme |
62 |
jpp |
1.14 |
- remove extra space in URL in search.php [SME: 12232] |
63 |
|
|
|
64 |
jcrisp |
1.13 |
* Thu Sep 30 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-12.sme |
65 |
|
|
- Attempt to fix the final reload after CA creation [SME: 11192] |
66 |
|
|
|
67 |
jcrisp |
1.12 |
* Thu Aug 05 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-11.sme |
68 |
|
|
- Fix html syntax error in help - Thanks Mauro De Carolis [SME: 11688] |
69 |
|
|
|
70 |
|
|
* Tue Apr 06 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-10.sme |
71 |
jcrisp |
1.11 |
- And tidy up the copying wording. [SME: 11192] |
72 |
|
|
- Credit to Terry Fage for persisting with testing |
73 |
|
|
|
74 |
jcrisp |
1.10 |
* Mon Apr 05 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-9.sme |
75 |
|
|
- Really fix the copy this time [SME: 11192] |
76 |
|
|
|
77 |
|
|
* Sat Apr 03 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-8.sme |
78 |
|
|
- copy phpki-store as a backup instead of move [SME: 11192] |
79 |
jcrisp |
1.9 |
|
80 |
jcrisp |
1.8 |
* Thu Apr 01 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-7.sme |
81 |
|
|
- Fix broken Download Certificate in Cert generation [SME: 11513] |
82 |
|
|
|
83 |
jcrisp |
1.7 |
* Thu Mar 18 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-6.sme |
84 |
jcrisp |
1.10 |
- Update html header info [SME: 11192] |
85 |
jcrisp |
1.7 |
- Remove obsolete align |
86 |
|
|
- Remove accidentally duplicated html |
87 |
|
|
- Fix typo |
88 |
|
|
- Fix directory check |
89 |
|
|
- move function flush_exec to functions file |
90 |
|
|
|
91 |
jcrisp |
1.5 |
* Tue Mar 09 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-5.sme |
92 |
|
|
- Fix missing / [SME:11435] |
93 |
|
|
- Update cert type detection for renew [SME: 11436] |
94 |
|
|
- Code formatting |
95 |
|
|
|
96 |
jcrisp |
1.4 |
* Mon Mar 08 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-4.sme |
97 |
|
|
- Fix crl creation [SME: 11141] |
98 |
|
|
- Extra notes in setup page |
99 |
|
|
|
100 |
jcrisp |
1.3 |
* Mon Mar 08 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-3.sme |
101 |
|
|
- Fix Typo in certificate password [SME: 11435] |
102 |
|
|
- Fix typos and preg_match issues [SME: 11436] |
103 |
jcrisp |
1.4 |
- Add Certificate creation notification [SME: 11437] |
104 |
|
|
- Bit of file formatting |
105 |
jcrisp |
1.3 |
|
106 |
jcrisp |
1.4 |
* Wed Mar 03 2021 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-2.sme |
107 |
jcrisp |
1.2 |
- Change version to 0.84 |
108 |
|
|
- Fix undefined constant errors [SME: 11397] |
109 |
|
|
- fix tempdir [SME: 11398] |
110 |
|
|
- update code to be PHP 7.4+ compliant |
111 |
|
|
- format with CodeSniff to PSR2 |
112 |
|
|
|
113 |
jcrisp |
1.1 |
* Wed Apr 01 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.84-1.sme |
114 |
jcrisp |
1.2 |
- Rename to php-ng 0.84 [SME: 11192] |
115 |
jcrisp |
1.1 |
- Fix date sorting in certificates |
116 |
|
|
|
117 |
|
|
* Thu Mar 19 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-9.sme |
118 |
|
|
- Update DH to 2048 |
119 |
|
|
|
120 |
|
|
* Mon Mar 09 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-8.sme |
121 |
|
|
- move warning and exit to %pre |
122 |
|
|
|
123 |
|
|
* Sat Mar 07 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-7.sme |
124 |
|
|
- Lots of formatting - adding quotes to items and tidying up |
125 |
|
|
- set default md to 512 |
126 |
|
|
|
127 |
|
|
* Wed Mar 04 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-6.sme |
128 |
|
|
- Fix renew-cert |
129 |
|
|
- revert DH setup so you can see progress |
130 |
|
|
|
131 |
|
|
* Wed Mar 04 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-5.sme |
132 |
|
|
- Fix create cert without password |
133 |
|
|
|
134 |
|
|
* Wed Mar 04 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-4.sme |
135 |
|
|
- Fix openvpn error |
136 |
|
|
|
137 |
|
|
* Tue Mar 03 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-3.sme |
138 |
|
|
- more fixes |
139 |
|
|
|
140 |
|
|
* Sat Feb 29 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-2.sme |
141 |
|
|
- small fixes |
142 |
|
|
|
143 |
|
|
* Fri Feb 28 2020 John Crisp <jcrisp@safeandsoundit.co.uk> 0.83-1.sme |
144 |
|
|
- Update to 0.83 |
145 |
|
|
|
146 |
jcrisp |
1.2 |
* Sat Nov 17 2018 Terry Fage <tfage@yahoo.com.au> 0.82-19.sme |
147 |
jcrisp |
1.1 |
- Fix preg_match warnings [SME:10622] |
148 |
|
|
|
149 |
|
|
* Mon Oct 8 2018 Daniel B. <daniel@firewall-services.com> 0.82-18.sme |
150 |
|
|
- Fix potential XSS with unsafe use of PHP_SELF [SME: 10626] |
151 |
|
|
|
152 |
|
|
* Thu Sep 6 2018 brian r. <brianr@bjsystems.co.uk> 0.82-17.sme |
153 |
|
|
- Replace use of ereg by preg_replace as per deprecated in php 5.3 and removed in 7.0 |
154 |
|
|
- [SME: 10622] |
155 |
|
|
|
156 |
|
|
* Mon Dec 12 2011 Daniel B. <daniel@firewall-services.com> 0.82-16.sme |
157 |
|
|
- Remove php-posix dependency (not available, nor needed on SME 7.x) [SME: 6805] |
158 |
|
|
|
159 |
|
|
* Wed Oct 26 2011 Daniel B. <daniel@firewall-services.com> 0.82-15.sme |
160 |
|
|
- Requires php-posix |
161 |
|
|
|
162 |
|
|
* Wed Jun 29 2011 Daniel B. <daniel@firewall-services.com> 0.82-14.sme |
163 |
|
|
- Don't check issuer (everyone allowed to access /ca can manage |
164 |
|
|
all the certificates, access to /ca is controlled by apache) |
165 |
|
|
|
166 |
|
|
* Tue Mar 15 2011 Daniel B. <daniel@firewall-services.com> 0.82-13.sme |
167 |
|
|
- Replace md5 with sha1 for signing |
168 |
|
|
|
169 |
|
|
* Fri May 28 2010 Daniel B. <daniel@firewall-services.com> [0.82-12] |
170 |
|
|
- Weekly update the CRL via cron so MS Crypto API will be happy |
171 |
|
|
|
172 |
|
|
* Thu Mar 18 2010 Daniel B. <daniel@firewall-services.com> [0.82-11] |
173 |
|
|
- Fixe empty password with PHP 5.2 (SME 8b5) |
174 |
|
|
|
175 |
|
|
* Wed Aug 26 2009 Daniel B. <daniel@firewall-services.com> [0.82-10] |
176 |
|
|
- Fixe links for CA help page |
177 |
|
|
|
178 |
|
|
* Mon Mar 23 2009 Daniel B. <daniel@firewall-services.com> [0.82-9] |
179 |
|
|
- Remove links after uninstall so you can easily re-install the contrib |
180 |
|
|
later [SME: 5091] |
181 |
|
|
|
182 |
|
|
* Tue Mar 03 2009 Daniel B. <daniel@firewall-services.com> [0.82-8] |
183 |
|
|
- Add e-smith-devtools as a dependencie |
184 |
|
|
|
185 |
|
|
* Tue Jan 20 2009 Daniel B. <daniel@firewall-services.com> [0.82-7] |
186 |
|
|
- Don't replace config file on upgrades |
187 |
|
|
|
188 |
|
|
* Wed Jan 07 2009 Daniel B. <daniel@firewall-services.com> [0.82-6] |
189 |
|
|
- Remove the email address from the file name during upload (in search page) |
190 |
|
|
- Remove secure.sh script |
191 |
|
|
|
192 |
|
|
* Tue Dec 16 2008 Daniel B. <daniel@firewall-services.com> [0.82-5] |
193 |
|
|
- Link index.php to setup-presetup.php |
194 |
|
|
|
195 |
|
|
* Mon Dec 08 2008 Daniel B. <daniel@firewall-services.com> [0.82-4] |
196 |
|
|
- Changes so certificates imported from openvpn-bridge are recognized |
197 |
|
|
- Configure default admin user to 'admin' |
198 |
|
|
- Create a static key for OpenVPN TLS auth (requires openvpn) |
199 |
|
|
- Add expirey values (3 Months, 6 Months) |
200 |
|
|
- Display or download takey.pem and dhparam1024.pem from |
201 |
|
|
the certificate management menue |
202 |
|
|
- Display the Root certificate in PEM format |
203 |
|
|
- Possibility to download the CRL in PEM format |
204 |
|
|
- Remove the email address from the file name during upload |
205 |
|
|
- Disable download of certificate after creating a new one |
206 |
|
|
- Remove security warning after setup |
207 |
|
|
|
208 |
|
|
* Fri Dec 05 2008 Daniel B. <daniel@firewall-services.com> [0.82-3] |
209 |
|
|
- Correct extension name for email_signing certificates |
210 |
|
|
- Remove links, and recreate them in the %post section so upgrade can be done smoothly |
211 |
|
|
|
212 |
|
|
* Wed Nov 26 2008 Daniel B. <daniel@firewall-services.com> [0.82-0] |
213 |
|
|
- initial release |
214 |
|
|
- builds from unchanged .tar.gz |
215 |
|
|
|
216 |
|
|
%prep |
217 |
|
|
%setup -c -n %{name} |
218 |
jcrisp |
1.2 |
%patch1 -p1 |
219 |
jcrisp |
1.3 |
%patch2 -p1 |
220 |
jcrisp |
1.4 |
%patch3 -p1 |
221 |
jcrisp |
1.5 |
%patch4 -p1 |
222 |
jcrisp |
1.7 |
%patch5 -p1 |
223 |
jcrisp |
1.8 |
%patch6 -p1 |
224 |
jcrisp |
1.12 |
%patch7 -p1 |
225 |
jcrisp |
1.13 |
%patch8 -p1 |
226 |
jpp |
1.15 |
%patch9 -p1 |
227 |
jpp |
1.16 |
%patch10 -p1 |
228 |
jcrisp |
1.1 |
|
229 |
|
|
%build |
230 |
|
|
%{__mkdir_p} root/opt/phpki/html |
231 |
|
|
%{__mkdir_p} root/opt/phpki/phpki-store |
232 |
|
|
%{__mkdir_p} root/opt/phpki/bin |
233 |
|
|
%{__mkdir_p} root/%{_sysconfdir}/cron.weekly/ |
234 |
|
|
%{__mv} %{name}-%{version}/gen_crl.php root/opt/phpki/bin/ |
235 |
|
|
%{__mv} %{name}-%{version}/* root/opt/phpki/html/ |
236 |
|
|
|
237 |
|
|
|
238 |
|
|
cat <<"HERE" > root/%{_sysconfdir}/cron.weekly/phpki_update_crl |
239 |
|
|
#!/bin/bash |
240 |
|
|
|
241 |
|
|
cd /opt/phpki/bin |
242 |
jcrisp |
1.2 |
/usr/bin/php74 ./gen_crl.php 2>&1 > /dev/null |
243 |
jcrisp |
1.1 |
|
244 |
|
|
HERE |
245 |
|
|
|
246 |
|
|
|
247 |
|
|
# Remove links to setup page so upgrades can be done smoothly |
248 |
|
|
%{__rm} -f root/opt/phpki/html/index.php |
249 |
|
|
%{__rm} -f root/opt/phpki/html/ca/index.php |
250 |
|
|
%{__rm} -f root/opt/phpki/html/setup.php |
251 |
|
|
|
252 |
|
|
# This script shouldn't be here |
253 |
|
|
%{__rm} -f root/opt/phpki/html/secure.sh |
254 |
|
|
|
255 |
|
|
|
256 |
|
|
%install |
257 |
|
|
rm -rf $RPM_BUILD_ROOT |
258 |
|
|
(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT) |
259 |
|
|
rm -f %{name}-%{version}-filelist |
260 |
|
|
/sbin/e-smith/genfilelist $RPM_BUILD_ROOT \ |
261 |
|
|
--file '/opt/phpki/html/config.php' 'attr(660,root,phpki) %config(noreplace)' \ |
262 |
|
|
--file '/opt/phpki/html/openssl.cnf' 'attr(660,root,phpki) %config(noreplace)' \ |
263 |
|
|
--file '%{_sysconfdir}/cron.weekly/phpki_update_crl' 'attr(744,root,root)' \ |
264 |
|
|
--dir '/opt/phpki/html' 'attr(770,root,phpki)' \ |
265 |
|
|
--dir '/opt/phpki/html/ca' 'attr(770,root,phpki)' \ |
266 |
|
|
--dir '/opt/phpki/phpki-store' 'attr(750,phpki,phpki)' \ |
267 |
|
|
> %{name}-%{version}-filelist |
268 |
|
|
|
269 |
|
|
%files -f %{name}-%{version}-filelist |
270 |
|
|
%defattr(-,root,root) |
271 |
|
|
|
272 |
|
|
%clean |
273 |
|
|
cd .. |
274 |
|
|
rm -rf $RPM_BUILD_ROOT |
275 |
|
|
|
276 |
|
|
%pre |
277 |
jpp |
1.18 |
if ! /usr/bin/id phpki &>/dev/null; then |
278 |
|
|
echo "Creating phpki user" |
279 |
|
|
/usr/sbin/useradd -c 'Phpki User' -s /sbin/nologin -r -d /opt/phpki/phpki-store phpki &>/dev/null || \ |
280 |
|
|
%logmsg "Unexpected error adding user \"phpki\". Abort installation." |
281 |
|
|
fi |
282 |
|
|
|
283 |
jcrisp |
1.1 |
echo "******************************************************" |
284 |
|
|
echo "* " |
285 |
|
|
echo "* !!! IMPORTANT - READ THIS NOW !!! " |
286 |
|
|
echo "* " |
287 |
|
|
echo "******************************************************" |
288 |
|
|
echo "* This contrib now has higher levels of encryption" |
289 |
|
|
echo "* " |
290 |
|
|
echo "* We cannot upgrade your existing certificates" |
291 |
jpp |
1.15 |
echo "* existing certificates from SME9 or below have either " |
292 |
|
|
echo "* md5WithRSAEncryption sha1WithRSAEncryption" |
293 |
|
|
echo "* as Signature Algorithm (weak)." |
294 |
|
|
echo "* only way to update to sha256 or sha512 is to " |
295 |
|
|
echo "* start from scratch." |
296 |
jcrisp |
1.1 |
echo "* " |
297 |
jcrisp |
1.9 |
echo "* If you have existing certificates you want to use" |
298 |
|
|
echo "* then start with a new CA, backup up, and then restore" |
299 |
|
|
echo "* your phpki-store directory in /opt/phpki" |
300 |
jcrisp |
1.1 |
echo "* " |
301 |
|
|
echo "******************************************************" |
302 |
|
|
echo "" |
303 |
|
|
|
304 |
|
|
if [ -d /opt/phpki/phpki-store ] ; then |
305 |
|
|
echo "Backing up your /opt/phpki/phpki-store" |
306 |
jpp |
1.15 |
today=$(date "+%Y%m%d%H%M") |
307 |
|
|
echo "Copying from /opt/phpki/phpki-store to /opt/phpki/phpki-store.$today" |
308 |
|
|
/bin/cp -pr /opt/phpki/phpki-store "/opt/phpki/phpki-store.$today" |
309 |
|
|
echo "Directory copied... continuing to install" |
310 |
|
|
# fix missing md_default |
311 |
|
|
if ( grep default_md /opt/phpki/phpki-store/config/config.php -q ); then |
312 |
|
|
echo "md_default OK" |
313 |
|
|
else |
314 |
|
|
echo "default_md missing in /opt/phpki/phpki-store/config/config.php" |
315 |
|
|
echo "getting value from /opt/phpki/phpki-store/config/openssl.cnf" |
316 |
|
|
# it could ba acceptable to hash sha256 a certificate from a root with sha1. |
317 |
|
|
defaultmd=$(awk '/^default_md/{print $NF}' /opt/phpki/phpki-store/config/openssl.cnf || echo "sha512") |
318 |
|
|
echo "inserting $defaultmd default_md at end of /opt/phpki/phpki-store/config/config.php" |
319 |
|
|
sed -i '/\?>/i \ |
320 |
|
|
# Define default md \ |
321 |
|
|
\$config['default_md'] = "'$defaultmd'";' /opt/phpki/phpki-store/config/config.php |
322 |
|
|
echo "Done... continuing to install" |
323 |
|
|
fi |
324 |
jcrisp |
1.1 |
else |
325 |
jpp |
1.15 |
echo "No directory detected... continuing to install" |
326 |
jcrisp |
1.1 |
fi |
327 |
|
|
|
328 |
jcrisp |
1.11 |
|
329 |
jcrisp |
1.1 |
%preun |
330 |
|
|
|
331 |
|
|
|
332 |
|
|
%post |
333 |
|
|
# First install, point index.php to setup.php |
334 |
|
|
if [ $1 == 1 ]; then |
335 |
jpp |
1.15 |
#do not do if there is already a CA (restore from backup)) |
336 |
|
|
if [ ! -f /opt/phpki/phpki-store/config/config.php ] ; then |
337 |
jcrisp |
1.1 |
%{__ln_s} /opt/phpki/html/setup.php-presetup /opt/phpki/html/index.php |
338 |
|
|
%{__ln_s} /opt/phpki/html/setup.php-presetup /opt/phpki/html/setup.php |
339 |
jpp |
1.15 |
fi |
340 |
|
|
echo "<?php |
341 |
jcrisp |
1.1 |
header(\"Location: ./../index.php\"); |
342 |
|
|
?> |
343 |
|
|
" > /opt/phpki/html/ca/index.php |
344 |
|
|
fi |
345 |
|
|
|
346 |
|
|
|
347 |
|
|
%postun |
348 |
|
|
# Remove the links to index.php after uninstall |
349 |
|
|
if [ $1 == 0 ]; then |
350 |
|
|
%{__rm} -f /opt/phpki/html/index.php |
351 |
|
|
%{__rm} -f /opt/phpki/html/setup.php |
352 |
|
|
%{__rm} -f /opt/phpki/html/ca/index.php |
353 |
|
|
fi |
354 |
|
|
|
355 |
|
|
true |