2 # - consider dropping last optflags.patch hunk and return to SOMAJOR (.so.1) sonames
3 # - find a way to simplify (drop) openssl-optflags.patch, it's pain to update here in pld
6 %bcond_without tests # don't perform "make tests"
7 %bcond_without zlib # zlib: note - enables CVE-2012-4929 vulnerability
8 %bcond_without sslv2 # SSLv2: note - many flaws http://en.wikipedia.org/wiki/Transport_Layer_Security#SSL_2.0
9 %bcond_without sslv3 # SSLv3: note - enables CVE-2014-3566 vulnerability
10 %bcond_with purify # Compile openssl with "-DPURIFY", useful when one wants to
11 # use valgrind debugger against openssl-linked programs
12 %bcond_with snap # use GitHub snapshot to build branch release
15 %include /usr/lib/rpm/macros.perl
16 Summary: OpenSSL Toolkit libraries for the "Secure Sockets Layer" (SSL v2/v3)
17 Summary(de.UTF-8): Secure Sockets Layer (SSL)-Kommunikationslibrary
18 Summary(es.UTF-8): Biblioteca C que suministra algoritmos y protocolos criptográficos
19 Summary(fr.UTF-8): Utilitaires de communication SSL (Secure Sockets Layer)
20 Summary(pl.UTF-8): Biblioteki OpenSSL (SSL v2/v3)
21 Summary(pt_BR.UTF-8): Uma biblioteca C que fornece vários algoritmos e protocolos criptográficos
22 Summary(ru.UTF-8): Библиотеки и утилиты для соединений через Secure Sockets Layer
23 Summary(uk.UTF-8): Бібліотеки та утиліти для з'єднань через Secure Sockets Layer
25 # 1.0.2 will be LTS release
26 # Version 1.0.2 will be supported until 2019-12-31.
27 # https://www.openssl.org/about/releasestrat.html
33 Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz
34 # Source0-md5: dbef70de4a1a4bdd78ab7c6547e5211d
36 Source1: https://github.com/openssl/openssl/archive/OpenSSL_1_0_2-stable/%{name}-%{version}-dev.tar.gz
39 Source3: %{name}-ssl-certificate.sh
40 Source4: %{name}-c_rehash.sh
41 Patch0: %{name}-alpha-ccc.patch
42 Patch1: %{name}-optflags.patch
43 Patch2: %{name}-include.patch
44 Patch3: %{name}-man-namespace.patch
45 Patch4: %{name}-asflag.patch
46 Patch5: %{name}-ca-certificates.patch
47 Patch6: %{name}-ldflags.patch
48 Patch7: %{name}-find.patch
50 Patch10: %{name}_fix_for_x32.patch
51 Patch11: engines-dir.patch
52 URL: http://www.openssl.org/
53 BuildRequires: perl-devel >= 1:5.10.0
54 BuildRequires: pkgconfig
55 BuildRequires: rpm-perlprov >= 4.1-13
56 BuildRequires: rpmbuild(macros) >= 1.213
57 BuildRequires: sed >= 4.0
58 BuildRequires: zlib-devel
59 Requires: ca-certificates >= 20120623-1.1
60 Requires: rpm-whiteout >= 1.7
62 Obsoletes: SSLeay-devel
63 Obsoletes: SSLeay-perl
64 Obsoletes: libopenssl0
65 %if "%{pld_release}" == "ac"
66 Conflicts: neon < 0.26.3-3
67 Conflicts: ntpd < 4.2.4p8-10
68 Conflicts: openssh-clients < 2:5.8p1-9
69 Conflicts: openssh-server < 2:5.8p1-9
71 Conflicts: neon < 0.29.6-8
72 Conflicts: openssh-clients < 2:6.2p2-3
73 Conflicts: openssh-server < 2:6.2p2-3
75 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
78 The OpenSSL Project is a collaborative effort to develop a robust,
79 commercial-grade, full-featured, and Open Source toolkit implementing
80 the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
81 v1) protocols with full-strength cryptography world-wide. The project
82 is managed by a worldwide community of volunteers that use the
83 Internet to communicate, plan, and develop the OpenSSL tookit and its
84 related documentation.
86 OpenSSL is based on the excellent SSLeay library developed by Eric A.
87 Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an
88 Apache-style licence, which basically means that you are free to get
89 and use it for commercial and non-commercial purposes subject to some
90 simple license conditions.
92 This package contains shared libraries only, install openssl-tools if
93 you want to use openssl cmdline tool.
95 %description -l de.UTF-8
96 Openssl enthält das OpenSSL Zertifikatsmanagementtool und shared
97 libraries, die verschiedene Verschlüsselungs- und
98 Entschlüsselungsalgorithmen und -protokolle, wie DES, RC4, RSA und SSL
99 zur Verfügung stellen.
101 %description -l es.UTF-8
102 Biblioteca C que suministra algoritmos y protocolos criptográficos.
104 %description -l fr.UTF-8
105 OpenSSL est un outiil de gestion des certificats et les librairies
106 partagees qui fournit plusieurs protocoles et algorithmes de
107 codage/decodage, incluant DES, RC4, RSA et SSL.
109 %description -l pl.UTF-8
110 Implementacja protokołów kryptograficznych Secure Socket Layer (SSL)
111 v2/v3 oraz Transport Layer Security (TLS v1).
113 %description -l pt_BR.UTF-8
114 Uma biblioteca C que fornece vários algoritmos e protocolos
115 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas
116 compartilhadas e utilitários.
118 %description -l ru.UTF-8
119 Программа openssl для работы с сертификатами и разделяемые библиотеки,
120 которые реализуют множетсво криптографических алгоритмов, включая DES,
123 %description -l uk.UTF-8
124 Програма openssl для роботи з сертифікатами та бібліотеки спільного
125 користування, що реалізують велику кількість криптографічних
126 алгоритмів, включаючи DES, RC4, RSA та SSL.
129 Summary: OpenSSL optional crypto engines
130 Summary(pl.UTF-8): Opcjonalne silniki kryptograficzne dla OpenSSL-a
132 Requires: %{name} = %{version}-%{release}
135 With OpenSSL 0.9.6, a new component was added to support alternative
136 cryptography implementations, most commonly for interfacing with
137 external crypto devices (eg. accelerator cards). This component is
140 There are currently built-in ENGINE implementations for the following
149 In addition, dynamic binding to external ENGINE implementations is now
150 provided by a special ENGINE called "dynamic".
152 %description engines -l pl.UTF-8
153 Począwszy od OpenSSL-a 0.9.6 został dodany nowy komponent, mający
154 wspierać alternatywne implementacje kryptografii, przeważnie
155 współpracujące z zewnętrznymi urządzeniami kryptograficznymi (np.
156 kartami akceleratorów). Komponent ten jest nazywany SILNIKIEM (ang.
159 Obecnie istnieją wbudowane implementacje silników dla następujących
160 urządzeń kryptograficznych:
167 Ponadto zapewnione jest dynamiczne wiązanie dla zewnętrznych
168 implementacji silników poprzez specjalny silnik o nazwie "dynamic".
171 Summary: OpenSSL command line tool and utilities
172 Summary(pl.UTF-8): Zestaw narzędzi i skryptów
173 Group: Applications/Communications
174 Requires: %{name} = %{version}-%{release}
178 The OpenSSL Toolkit cmdline tool openssl and utility scripts.
180 %description tools -l pl.UTF-8
181 Zestaw narzędzi i skryptów wywoływanych z linii poleceń.
184 Summary: OpenSSL utilities written in Perl
185 Summary(pl.UTF-8): Narzędzia OpenSSL napisane w perlu
186 Group: Applications/Communications
187 Requires: %{name} = %{version}-%{release}
189 %description tools-perl
190 OpenSSL Toolkit tools written in Perl.
192 %description tools-perl -l pl.UTF-8
193 Narzędzia OpenSSL napisane w perlu.
196 Summary: Development part of OpenSSL Toolkit libraries
197 Summary(de.UTF-8): Secure Sockets Layer Kommunikationslibrary: statische libraries+header
198 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para desarrollo OpenSSL
199 Summary(fr.UTF-8): Librairies statiques, headers et utilitaires pour communication SSL
200 Summary(pl.UTF-8): Część bibiloteki OpenSSL przeznaczona dla programistów
201 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para desenvolvimento OpenSSL
202 Summary(ru.UTF-8): Библиотеки, хедеры и утилиты для Secure Sockets Layer
203 Summary(uk.UTF-8): Бібліотеки, хедери та утиліти для Secure Sockets Layer
204 Group: Development/Libraries
205 Requires: %{name} = %{version}-%{release}
206 Obsoletes: libopenssl0-devel
209 Development part of OpenSSL library.
211 %description devel -l es.UTF-8
212 Bibliotecas y archivos de inclusión para desarrollo OpenSSL
214 %description devel -l pl.UTF-8
215 Część biblioteki OpenSSL przeznaczona dla programistów.
217 %description devel -l pt_BR.UTF-8
218 Uma biblioteca C que fornece vários algoritmos e protocolos
219 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas e
220 arquivos de inclusão para desenvolvimento.
222 %description devel -l ru.UTF-8
223 Программа openssl для работы с сертификатами и разделяемые библиотеки,
224 которые реализуют множетсво криптографических алгоритмов, включая DES,
225 RC4, RSA и SSL. Включает библиотеки и хедеры для разработки приложений
226 с использованием SSL.
228 %description devel -l uk.UTF-8
229 Програма openssl для роботи з сертифікатами та бібліотеки спільного
230 користування, що реалізують велику кількість криптографічних
231 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить бібліотеки та
232 хедери для розробки програм з використанням SSL.
235 Summary: Static OpenSSL libraries
236 Summary(pl.UTF-8): Statyczne wersje bibliotek z OpenSSL
237 Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com openssl
238 Summary(ru.UTF-8): Статические библиотеки разработчика для OpenSSL
239 Summary(uk.UTF-8): Статичні бібліотеки програміста для OpenSSL
240 Group: Development/Libraries
241 Requires: %{name}-devel = %{version}-%{release}
244 Static OpenSSL Toolkit libraries.
246 %description static -l pl.UTF-8
247 Statyczne wersje bibliotek z OpenSSL.
249 %description static -l pt_BR.UTF-8
250 Bibliotecas estáticas para desenvolvimento com openssl.
252 %description static -l ru.UTF-8
253 Программа openssl для работы с сертификатами и разделяемые библиотеки,
254 которые реализуют множетсво криптографических алгоритмов, включая DES,
255 RC4, RSA и SSL. Включает статические библиотеки для разработки
256 приложений с использованием OpenSSL.
258 %description static -l uk.UTF-8
259 Програма openssl для роботи з сертифікатами та бібліотеки спільного
260 користування, що реалізують велику кількість криптографічних
261 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить статичні
262 бібліотеки для розробки програм з використанням SSL.
267 mv %{name}-OpenSSL_1_0_2-stable/* .
269 %setup -q %{?subver:-n %{name}-%{version}-%{subver}}
271 #%patch0 -p1 # alpha patch from year 2000 - drop it
272 #%patch1 -p1 # flags list has been nuked (thank god!)
273 #%patch2 -p1 # openssl include subdir. check this
274 #%patch3 -p1 # patched Makefile.org no longer exists
275 #%patch4 -p1 # patched Makefile.org no longer exists
277 #%patch6 -p1 # patched Makefile.org no longer exists
288 # util/perlpath.pl no longer exists
289 #%{__perl} util/perlpath.pl %{__perl}
291 OPTFLAGS="%{rpmcflags} %{rpmcppflags} %{?with_purify:-DPURIFY}" \
293 %{__perl} ./Configure \
294 --prefix=%{_prefix} \
295 --openssldir=%{_sysconfdir}/%{name} \
299 %{?with_sslv2:enable-ssl2}%{!?with_sslv2:no-ssl2} \
300 %{?with_sslv3:enable-ssl3}%{!?with_sslv3:no-ssl3} \
301 %{!?with_zlib:no-}zlib \
310 enable-ec_nistp_64_gcc_128 \
315 # ^- allow running on 80386 (default code uses bswapl available on i486+)
347 %ifarch armv4 armv5 armv5t armv5te armv5tel
351 v=$(awk -F= '/^VERSION/{print $2}' Makefile)
352 test "$v" = %{version}%{?subver:-%{subver}}%{?with_snap:-dev}
354 %{__make} -j1 all %{?with_tests:tests} \
356 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
357 INSTALLTOP=%{_prefix}
359 # Rename POD sources of man pages. "openssl_" prefix is added to each
360 # manpage to avoid potential conflicts with other packages.
362 for dir in doc/{apps,ssl,crypto}; do
364 %{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
366 for pod in !(openssl*).pod; do
367 mv -f $pod openssl_$pod;
373 rm -rf $RPM_BUILD_ROOT
374 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}} \
375 $RPM_BUILD_ROOT{%{_mandir}/{pl/man1,man{1,3,5,7}},%{_datadir}/ssl} \
376 $RPM_BUILD_ROOT%{_pkgconfigdir}
378 %{__make} -j1 install \
380 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
381 DESTDIR=$RPM_BUILD_ROOT \
383 mv -f $RPM_BUILD_ROOT%{_libdir}/lib*.so.*.* $RPM_BUILD_ROOT/%{_lib}
384 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcrypto.*.*) $RPM_BUILD_ROOT%{_libdir}/libcrypto.so
385 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libssl.*.*) $RPM_BUILD_ROOT%{_libdir}/libssl.so
387 mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc/* $RPM_BUILD_ROOT%{_libdir}/%{name}
388 rm -r $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc
390 # html version of man pages - not packaged
391 %{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}/html/man[1357]
393 # not installed as individual utilities (see openssl dgst instead)
394 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{md4,md5,mdc2,ripemd160,sha,sha1,sha224,sha256,sha384,sha512}.1
396 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/pl/man1/openssl.1
397 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/ssl-certificate
398 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/c_rehash.sh
401 rm -rf $RPM_BUILD_ROOT
403 %post -p /sbin/ldconfig
404 %postun -p /sbin/ldconfig
406 %triggerpostun -- %{name}-tools < 1.0.0-5
407 # the hashing format has changed in 1.0.0
408 [ ! -x %{_sbindir}/update-ca-certificates ] || %{_sbindir}/update-ca-certificates --fresh || :
410 %triggerpostun -- %{name} < 0.9.8i-2
411 # don't do anything on --downgrade
412 if [ $1 -le 1 ]; then
415 if [ -d /var/lib/openssl/certs ] ; then
416 mv /var/lib/openssl/certs/* %{_sysconfdir}/%{name}/certs 2>/dev/null || :
418 if [ -d /var/lib/openssl/private ] ; then
419 mv /var/lib/openssl/private/* %{_sysconfdir}/%{name}/private 2>/dev/null || :
421 if [ -d /var/lib/openssl ] ; then
422 for f in /var/lib/openssl/* ; do
423 [ -f "$f" ] && mv "$f" %{_sysconfdir}/%{name} 2>/dev/null || :
425 rmdir /var/lib/openssl/* 2>/dev/null || :
426 rmdir /var/lib/openssl 2>/dev/null || :
430 %defattr(644,root,root,755)
431 %doc CHANGES LICENSE NEWS README doc/*.txt
432 %attr(755,root,root) /%{_lib}/libcrypto.so.*.*
433 %attr(755,root,root) /%{_lib}/libssl.so.*.*
434 %dir %{_sysconfdir}/%{name}
435 %dir %{_sysconfdir}/%{name}/certs
436 %dir %attr(700,root,root) %{_sysconfdir}/%{name}/private
440 %defattr(644,root,root,755)
441 %dir /%{_lib}/engines-1.1
442 %attr(755,root,root) /%{_lib}/engines-1.1/*.so
445 %defattr(644,root,root,755)
446 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/openssl.cnf
447 %attr(755,root,root) %{_bindir}/c_rehash.sh
448 %attr(755,root,root) %{_bindir}/openssl
449 %attr(754,root,root) %{_bindir}/ssl-certificate
451 %dir %{_libdir}/%{name}
452 #%attr(755,root,root) %{_libdir}/%{name}/CA.sh
453 #%attr(755,root,root) %{_libdir}/%{name}/c_hash
454 #%attr(755,root,root) %{_libdir}/%{name}/c_info
455 #%attr(755,root,root) %{_libdir}/%{name}/c_issuer
456 #%attr(755,root,root) %{_libdir}/%{name}/c_name
458 %{_mandir}/man1/openssl.1*
459 %{_mandir}/man1/openssl_asn1parse.1*
460 %{_mandir}/man1/openssl_ca.1*
461 %{_mandir}/man1/openssl_ciphers.1*
462 %{_mandir}/man1/openssl_cms.1*
463 %{_mandir}/man1/openssl_crl.1*
464 %{_mandir}/man1/openssl_crl2pkcs7.1*
465 %{_mandir}/man1/openssl_dgst.1*
466 %{_mandir}/man1/openssl_dhparam.1*
467 %{_mandir}/man1/openssl_dsa.1*
468 %{_mandir}/man1/openssl_dsaparam.1*
469 %{_mandir}/man1/openssl_ec.1*
470 %{_mandir}/man1/openssl_ecparam.1*
471 %{_mandir}/man1/openssl_enc.1*
472 %{_mandir}/man1/openssl_errstr.1*
473 %{_mandir}/man1/openssl_gendsa.1*
474 %{_mandir}/man1/openssl_genpkey.1*
475 %{_mandir}/man1/openssl_genrsa.1*
476 %{_mandir}/man1/openssl_nseq.1*
477 %{_mandir}/man1/openssl_ocsp.1*
478 %{_mandir}/man1/openssl_passwd.1*
479 %{_mandir}/man1/openssl_pkcs12.1*
480 %{_mandir}/man1/openssl_pkcs7.1*
481 %{_mandir}/man1/openssl_pkcs8.1*
482 %{_mandir}/man1/openssl_pkey.1*
483 %{_mandir}/man1/openssl_pkeyparam.1*
484 %{_mandir}/man1/openssl_pkeyutl.1*
485 %{_mandir}/man1/openssl_rand.1*
486 %{_mandir}/man1/openssl_req.1*
487 %{_mandir}/man1/openssl_rsa.1*
488 %{_mandir}/man1/openssl_rsautl.1*
489 %{_mandir}/man1/openssl_s_client.1*
490 %{_mandir}/man1/openssl_s_server.1*
491 %{_mandir}/man1/openssl_s_time.1*
492 %{_mandir}/man1/openssl_sess_id.1*
493 %{_mandir}/man1/openssl_smime.1*
494 %{_mandir}/man1/openssl_speed.1*
495 %{_mandir}/man1/openssl_spkac.1*
496 %{_mandir}/man1/openssl_ts.1*
497 %{_mandir}/man1/openssl_tsget.1*
498 %{_mandir}/man1/openssl_verify.1*
499 %{_mandir}/man1/openssl_version.1*
500 %{_mandir}/man1/openssl_x509.1*
501 %{_mandir}/man5/openssl_config.5*
502 %{_mandir}/man5/openssl_x509v3_config.5*
503 %lang(pl) %{_mandir}/pl/man1/openssl.1*
506 %defattr(644,root,root,755)
507 %attr(755,root,root) %{_bindir}/c_rehash
508 %attr(755,root,root) %{_libdir}/%{name}/CA.pl
509 %attr(755,root,root) %{_libdir}/%{name}/tsget
510 %{_mandir}/man1/openssl_CA.pl.1*
511 #%{_mandir}/man1/openssl_c_rehash.1*
514 %defattr(644,root,root,755)
515 %attr(755,root,root) %{_libdir}/libcrypto.so
516 %attr(755,root,root) %{_libdir}/libssl.so
517 %{_includedir}/%{name}
518 %{_pkgconfigdir}/libcrypto.pc
519 %{_pkgconfigdir}/libssl.pc
520 %{_pkgconfigdir}/openssl.pc
525 %{_mandir}/man3/openssl*.3*
526 %{_mandir}/man7/openssl_des_modes.7*
530 %defattr(644,root,root,755)
531 %{_libdir}/libcrypto.a