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
14 %include /usr/lib/rpm/macros.perl
15 Summary: OpenSSL Toolkit libraries for the "Secure Sockets Layer" (SSL v2/v3)
16 Summary(de.UTF-8): Secure Sockets Layer (SSL)-Kommunikationslibrary
17 Summary(es.UTF-8): Biblioteca C que suministra algoritmos y protocolos criptográficos
18 Summary(fr.UTF-8): Utilitaires de communication SSL (Secure Sockets Layer)
19 Summary(pl.UTF-8): Biblioteki OpenSSL (SSL v2/v3)
20 Summary(pt_BR.UTF-8): Uma biblioteca C que fornece vários algoritmos e protocolos criptográficos
21 Summary(ru.UTF-8): Библиотеки и утилиты для соединений через Secure Sockets Layer
22 Summary(uk.UTF-8): Бібліотеки та утиліти для з'єднань через Secure Sockets Layer
24 # 1.0.2 will be LTS release
25 # Version 1.0.2 will be supported until 2019-12-31.
26 # https://www.openssl.org/about/releasestrat.html
32 Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz
33 # Source0-md5: f3c710c045cdee5fd114feb69feba7aa
35 Source1: https://github.com/openssl/openssl/archive/OpenSSL_1_0_2-stable/%{name}-%{version}-dev.tar.gz
38 Source3: %{name}-ssl-certificate.sh
39 Source4: %{name}-c_rehash.sh
40 Patch0: %{name}-alpha-ccc.patch
41 Patch1: %{name}-optflags.patch
42 Patch2: %{name}-include.patch
43 Patch3: %{name}-man-namespace.patch
44 Patch4: %{name}-asflag.patch
45 Patch5: %{name}-ca-certificates.patch
46 Patch6: %{name}-ldflags.patch
47 Patch7: %{name}-find.patch
49 Patch10: %{name}_fix_for_x32.patch
50 URL: http://www.openssl.org/
52 BuildRequires: perl-devel >= 1:5.6.1
53 BuildRequires: rpm-perlprov >= 4.1-13
54 BuildRequires: rpmbuild(macros) >= 1.213
55 BuildRequires: sed >= 4.0
56 Requires: ca-certificates >= 20120623-1.1
57 Requires: rpm-whiteout >= 1.7
59 Obsoletes: SSLeay-devel
60 Obsoletes: SSLeay-perl
61 Obsoletes: libopenssl0
62 %if "%{pld_release}" == "ac"
63 Conflicts: neon < 0.26.3-3
64 Conflicts: ntpd < 4.2.4p8-10
65 Conflicts: openssh-clients < 2:5.8p1-9
66 Conflicts: openssh-server < 2:5.8p1-9
68 Conflicts: apache-mod_ssl < 1:2.2.31-4
69 Conflicts: curl-libs < 7.47.1-2
70 Conflicts: neon < 0.29.6-8
71 Conflicts: openssh-clients < 2:6.2p2-3
72 Conflicts: openssh-server < 2:6.2p2-3
73 Conflicts: php52-common < 4:5.2.17-20130717.17
74 Conflicts: php53-common < 4:5.3.29-27
75 Conflicts: php54-common < 4:5.4.45-5
76 Conflicts: php55-common < 4:5.5.32-2
77 Conflicts: php56-common < 4:5.6.18-3
78 Conflicts: ruby-modules < 1:2.0.0.648-2
80 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
83 The OpenSSL Project is a collaborative effort to develop a robust,
84 commercial-grade, full-featured, and Open Source toolkit implementing
85 the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
86 v1) protocols with full-strength cryptography world-wide. The project
87 is managed by a worldwide community of volunteers that use the
88 Internet to communicate, plan, and develop the OpenSSL tookit and its
89 related documentation.
91 OpenSSL is based on the excellent SSLeay library developed by Eric A.
92 Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an
93 Apache-style licence, which basically means that you are free to get
94 and use it for commercial and non-commercial purposes subject to some
95 simple license conditions.
97 This package contains shared libraries only, install openssl-tools if
98 you want to use openssl cmdline tool.
100 %description -l de.UTF-8
101 Openssl enthält das OpenSSL Zertifikatsmanagementtool und shared
102 libraries, die verschiedene Verschlüsselungs- und
103 Entschlüsselungsalgorithmen und -protokolle, wie DES, RC4, RSA und SSL
104 zur Verfügung stellen.
106 %description -l es.UTF-8
107 Biblioteca C que suministra algoritmos y protocolos criptográficos.
109 %description -l fr.UTF-8
110 OpenSSL est un outiil de gestion des certificats et les librairies
111 partagees qui fournit plusieurs protocoles et algorithmes de
112 codage/decodage, incluant DES, RC4, RSA et SSL.
114 %description -l pl.UTF-8
115 Implementacja protokołów kryptograficznych Secure Socket Layer (SSL)
116 v2/v3 oraz Transport Layer Security (TLS v1).
118 %description -l pt_BR.UTF-8
119 Uma biblioteca C que fornece vários algoritmos e protocolos
120 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas
121 compartilhadas e utilitários.
123 %description -l ru.UTF-8
124 Программа openssl для работы с сертификатами и разделяемые библиотеки,
125 которые реализуют множетсво криптографических алгоритмов, включая DES,
128 %description -l uk.UTF-8
129 Програма openssl для роботи з сертифікатами та бібліотеки спільного
130 користування, що реалізують велику кількість криптографічних
131 алгоритмів, включаючи DES, RC4, RSA та SSL.
134 Summary: OpenSSL optional crypto engines
135 Summary(pl.UTF-8): Opcjonalne silniki kryptograficzne dla OpenSSL-a
137 Requires: %{name} = %{version}-%{release}
140 With OpenSSL 0.9.6, a new component was added to support alternative
141 cryptography implementations, most commonly for interfacing with
142 external crypto devices (eg. accelerator cards). This component is
145 There are currently built-in ENGINE implementations for the following
154 In addition, dynamic binding to external ENGINE implementations is now
155 provided by a special ENGINE called "dynamic".
157 %description engines -l pl.UTF-8
158 Począwszy od OpenSSL-a 0.9.6 został dodany nowy komponent, mający
159 wspierać alternatywne implementacje kryptografii, przeważnie
160 współpracujące z zewnętrznymi urządzeniami kryptograficznymi (np.
161 kartami akceleratorów). Komponent ten jest nazywany SILNIKIEM (ang.
164 Obecnie istnieją wbudowane implementacje silników dla następujących
165 urządzeń kryptograficznych:
172 Ponadto zapewnione jest dynamiczne wiązanie dla zewnętrznych
173 implementacji silników poprzez specjalny silnik o nazwie "dynamic".
176 Summary: OpenSSL command line tool and utilities
177 Summary(pl.UTF-8): Zestaw narzędzi i skryptów
178 Group: Applications/Communications
179 Requires: %{name} = %{version}-%{release}
183 The OpenSSL Toolkit cmdline tool openssl and utility scripts.
185 %description tools -l pl.UTF-8
186 Zestaw narzędzi i skryptów wywoływanych z linii poleceń.
189 Summary: OpenSSL utilities written in Perl
190 Summary(pl.UTF-8): Narzędzia OpenSSL napisane w perlu
191 Group: Applications/Communications
192 Requires: %{name} = %{version}-%{release}
194 %description tools-perl
195 OpenSSL Toolkit tools written in Perl.
197 %description tools-perl -l pl.UTF-8
198 Narzędzia OpenSSL napisane w perlu.
201 Summary: Development part of OpenSSL Toolkit libraries
202 Summary(de.UTF-8): Secure Sockets Layer Kommunikationslibrary: statische libraries+header
203 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para desarrollo OpenSSL
204 Summary(fr.UTF-8): Librairies statiques, headers et utilitaires pour communication SSL
205 Summary(pl.UTF-8): Część bibiloteki OpenSSL przeznaczona dla programistów
206 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para desenvolvimento OpenSSL
207 Summary(ru.UTF-8): Библиотеки, хедеры и утилиты для Secure Sockets Layer
208 Summary(uk.UTF-8): Бібліотеки, хедери та утиліти для Secure Sockets Layer
209 Group: Development/Libraries
210 Requires: %{name} = %{version}-%{release}
211 Obsoletes: libopenssl0-devel
214 Development part of OpenSSL library.
216 %description devel -l es.UTF-8
217 Bibliotecas y archivos de inclusión para desarrollo OpenSSL
219 %description devel -l pl.UTF-8
220 Część biblioteki OpenSSL przeznaczona dla programistów.
222 %description devel -l pt_BR.UTF-8
223 Uma biblioteca C que fornece vários algoritmos e protocolos
224 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas e
225 arquivos de inclusão para desenvolvimento.
227 %description devel -l ru.UTF-8
228 Программа openssl для работы с сертификатами и разделяемые библиотеки,
229 которые реализуют множетсво криптографических алгоритмов, включая DES,
230 RC4, RSA и SSL. Включает библиотеки и хедеры для разработки приложений
231 с использованием SSL.
233 %description devel -l uk.UTF-8
234 Програма openssl для роботи з сертифікатами та бібліотеки спільного
235 користування, що реалізують велику кількість криптографічних
236 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить бібліотеки та
237 хедери для розробки програм з використанням SSL.
240 Summary: Static OpenSSL libraries
241 Summary(pl.UTF-8): Statyczne wersje bibliotek z OpenSSL
242 Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com openssl
243 Summary(ru.UTF-8): Статические библиотеки разработчика для OpenSSL
244 Summary(uk.UTF-8): Статичні бібліотеки програміста для OpenSSL
245 Group: Development/Libraries
246 Requires: %{name}-devel = %{version}-%{release}
249 Static OpenSSL Toolkit libraries.
251 %description static -l pl.UTF-8
252 Statyczne wersje bibliotek z OpenSSL.
254 %description static -l pt_BR.UTF-8
255 Bibliotecas estáticas para desenvolvimento com openssl.
257 %description static -l ru.UTF-8
258 Программа openssl для работы с сертификатами и разделяемые библиотеки,
259 которые реализуют множетсво криптографических алгоритмов, включая DES,
260 RC4, RSA и SSL. Включает статические библиотеки для разработки
261 приложений с использованием OpenSSL.
263 %description static -l uk.UTF-8
264 Програма openssl для роботи з сертифікатами та бібліотеки спільного
265 користування, що реалізують велику кількість криптографічних
266 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить статичні
267 бібліотеки для розробки програм з використанням SSL.
272 mv %{name}-OpenSSL_1_0_2-stable/* .
289 sed -i -e 's|\$prefix/\$libdir/engines|/%{_lib}/engines|g' Configure
294 %{__perl} util/perlpath.pl %{__perl}
296 OPTFLAGS="%{rpmcflags} %{rpmcppflags} %{?with_purify:-DPURIFY}" \
298 %{__perl} ./Configure \
299 --openssldir=%{_sysconfdir}/%{name} \
303 %{!?with_sslv2:no-ssl2} \
304 %{!?with_sslv3:no-ssl3} \
305 %{!?with_zlib:no-}zlib \
316 enable-ec_nistp_64_gcc_128 \
321 # ^- allow running on 80386 (default code uses bswapl available on i486+)
353 %ifarch armv4 armv5 armv5t armv5te armv5tel
357 v=$(awk -F= '/^VERSION/{print $2}' Makefile)
358 test "$v" = %{version}%{?with_snap:-dev}
360 %{__make} -j1 all rehash %{?with_tests:tests} \
362 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
363 INSTALLTOP=%{_prefix}
365 # Rename POD sources of man pages. "openssl_" prefix is added to each
366 # manpage to avoid potential conflicts with other packages.
368 for dir in doc/{apps,ssl,crypto}; do
370 %{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
372 for pod in !(openssl*).pod; do
373 mv -f $pod openssl_$pod;
379 rm -rf $RPM_BUILD_ROOT
380 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}} \
381 $RPM_BUILD_ROOT{%{_mandir}/{pl/man1,man{1,3,5,7}},%{_datadir}/ssl} \
382 $RPM_BUILD_ROOT/%{_lib}/engines \
383 $RPM_BUILD_ROOT%{_pkgconfigdir}
385 %{__make} -j1 install \
386 INSTALLTOP=%{_prefix} \
387 INSTALL_PREFIX=$RPM_BUILD_ROOT \
390 mv -f $RPM_BUILD_ROOT%{_libdir}/engines/* $RPM_BUILD_ROOT/%{_lib}/engines
391 mv -f $RPM_BUILD_ROOT%{_libdir}/lib*.so.*.* $RPM_BUILD_ROOT/%{_lib}
392 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcrypto.*.*) $RPM_BUILD_ROOT%{_libdir}/libcrypto.so
393 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libssl.*.*) $RPM_BUILD_ROOT%{_libdir}/libssl.so
395 mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc/* $RPM_BUILD_ROOT%{_libdir}/%{name}
396 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc
398 # not installed as individual utilities (see openssl dgst instead)
399 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{dss1,md2,md4,md5,mdc2,ripemd160,sha,sha1,sha224,sha256,sha384,sha512}.1
401 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/pl/man1/openssl.1
402 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/ssl-certificate
403 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/c_rehash.sh
406 rm -rf $RPM_BUILD_ROOT
408 %post -p /sbin/ldconfig
409 %postun -p /sbin/ldconfig
411 %triggerpostun -- %{name}-tools < 1.0.0-5
412 # the hashing format has changed in 1.0.0
413 [ ! -x %{_sbindir}/update-ca-certificates ] || %{_sbindir}/update-ca-certificates --fresh || :
415 %triggerpostun -- %{name} < 0.9.8i-2
416 # don't do anything on --downgrade
417 if [ $1 -le 1 ]; then
420 if [ -d /var/lib/openssl/certs ] ; then
421 mv /var/lib/openssl/certs/* %{_sysconfdir}/%{name}/certs 2>/dev/null || :
423 if [ -d /var/lib/openssl/private ] ; then
424 mv /var/lib/openssl/private/* %{_sysconfdir}/%{name}/private 2>/dev/null || :
426 if [ -d /var/lib/openssl ] ; then
427 for f in /var/lib/openssl/* ; do
428 [ -f "$f" ] && mv "$f" %{_sysconfdir}/%{name} 2>/dev/null || :
430 rmdir /var/lib/openssl/* 2>/dev/null || :
431 rmdir /var/lib/openssl 2>/dev/null || :
435 %defattr(644,root,root,755)
436 %doc CHANGES CHANGES.SSLeay LICENSE NEWS README doc/*.txt
437 %attr(755,root,root) /%{_lib}/libcrypto.so.*.*.*
438 %attr(755,root,root) /%{_lib}/libssl.so.*.*.*
439 %dir %{_sysconfdir}/%{name}
440 %dir %{_sysconfdir}/%{name}/certs
441 %dir %attr(700,root,root) %{_sysconfdir}/%{name}/private
445 %defattr(644,root,root,755)
446 %dir /%{_lib}/engines
447 %attr(755,root,root) /%{_lib}/engines/*.so
450 %defattr(644,root,root,755)
451 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/openssl.cnf
452 %attr(755,root,root) %{_bindir}/c_rehash.sh
453 %attr(755,root,root) %{_bindir}/openssl
454 %attr(754,root,root) %{_bindir}/ssl-certificate
456 %dir %{_libdir}/%{name}
457 %attr(755,root,root) %{_libdir}/%{name}/CA.sh
458 %attr(755,root,root) %{_libdir}/%{name}/c_hash
459 %attr(755,root,root) %{_libdir}/%{name}/c_info
460 %attr(755,root,root) %{_libdir}/%{name}/c_issuer
461 %attr(755,root,root) %{_libdir}/%{name}/c_name
463 %{_mandir}/man1/openssl.1*
464 %{_mandir}/man1/openssl_asn1parse.1*
465 %{_mandir}/man1/openssl_ca.1*
466 %{_mandir}/man1/openssl_ciphers.1*
467 %{_mandir}/man1/openssl_cms.1*
468 %{_mandir}/man1/openssl_crl.1*
469 %{_mandir}/man1/openssl_crl2pkcs7.1*
470 %{_mandir}/man1/openssl_dgst.1*
471 %{_mandir}/man1/openssl_dhparam.1*
472 %{_mandir}/man1/openssl_dsa.1*
473 %{_mandir}/man1/openssl_dsaparam.1*
474 %{_mandir}/man1/openssl_ec.1*
475 %{_mandir}/man1/openssl_ecparam.1*
476 %{_mandir}/man1/openssl_enc.1*
477 %{_mandir}/man1/openssl_errstr.1*
478 %{_mandir}/man1/openssl_gendsa.1*
479 %{_mandir}/man1/openssl_genpkey.1*
480 %{_mandir}/man1/openssl_genrsa.1*
481 %{_mandir}/man1/openssl_nseq.1*
482 %{_mandir}/man1/openssl_ocsp.1*
483 %{_mandir}/man1/openssl_passwd.1*
484 %{_mandir}/man1/openssl_pkcs12.1*
485 %{_mandir}/man1/openssl_pkcs7.1*
486 %{_mandir}/man1/openssl_pkcs8.1*
487 %{_mandir}/man1/openssl_pkey.1*
488 %{_mandir}/man1/openssl_pkeyparam.1*
489 %{_mandir}/man1/openssl_pkeyutl.1*
490 %{_mandir}/man1/openssl_rand.1*
491 %{_mandir}/man1/openssl_req.1*
492 %{_mandir}/man1/openssl_rsa.1*
493 %{_mandir}/man1/openssl_rsautl.1*
494 %{_mandir}/man1/openssl_s_client.1*
495 %{_mandir}/man1/openssl_s_server.1*
496 %{_mandir}/man1/openssl_s_time.1*
497 %{_mandir}/man1/openssl_sess_id.1*
498 %{_mandir}/man1/openssl_smime.1*
499 %{_mandir}/man1/openssl_speed.1*
500 %{_mandir}/man1/openssl_spkac.1*
501 %{_mandir}/man1/openssl_ts.1*
502 %{_mandir}/man1/openssl_tsget.1*
503 %{_mandir}/man1/openssl_verify.1*
504 %{_mandir}/man1/openssl_version.1*
505 %{_mandir}/man1/openssl_x509.1*
506 %{_mandir}/man5/openssl_config.5*
507 %{_mandir}/man5/openssl_x509v3_config.5*
508 %lang(pl) %{_mandir}/pl/man1/openssl.1*
511 %defattr(644,root,root,755)
512 %attr(755,root,root) %{_bindir}/c_rehash
513 %attr(755,root,root) %{_libdir}/%{name}/CA.pl
514 %attr(755,root,root) %{_libdir}/%{name}/tsget
515 %{_mandir}/man1/openssl_CA.pl.1*
516 %{_mandir}/man1/openssl_c_rehash.1*
519 %defattr(644,root,root,755)
520 %attr(755,root,root) %{_libdir}/libcrypto.so
521 %attr(755,root,root) %{_libdir}/libssl.so
522 %{_includedir}/%{name}
523 %{_pkgconfigdir}/libcrypto.pc
524 %{_pkgconfigdir}/libssl.pc
525 %{_pkgconfigdir}/openssl.pc
526 %{_mandir}/man3/openssl*.3*
527 %{_mandir}/man7/openssl_des_modes.7*
530 %defattr(644,root,root,755)
531 %{_libdir}/libcrypto.a