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: https://www.openssl.org/source/%{name}-%{version}.tar.gz
33 # Source0-md5: 9392e65072ce4b614c1392eefc1f23d0
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: neon < 0.29.6-8
69 Conflicts: openssh-clients < 2:6.2p2-3
70 Conflicts: openssh-server < 2:6.2p2-3
72 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
75 The OpenSSL Project is a collaborative effort to develop a robust,
76 commercial-grade, full-featured, and Open Source toolkit implementing
77 the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
78 v1) protocols with full-strength cryptography world-wide. The project
79 is managed by a worldwide community of volunteers that use the
80 Internet to communicate, plan, and develop the OpenSSL tookit and its
81 related documentation.
83 OpenSSL is based on the excellent SSLeay library developed by Eric A.
84 Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an
85 Apache-style licence, which basically means that you are free to get
86 and use it for commercial and non-commercial purposes subject to some
87 simple license conditions.
89 This package contains shared libraries only, install openssl-tools if
90 you want to use openssl cmdline tool.
92 %description -l de.UTF-8
93 Openssl enthält das OpenSSL Zertifikatsmanagementtool und shared
94 libraries, die verschiedene Verschlüsselungs- und
95 Entschlüsselungsalgorithmen und -protokolle, wie DES, RC4, RSA und SSL
96 zur Verfügung stellen.
98 %description -l es.UTF-8
99 Biblioteca C que suministra algoritmos y protocolos criptográficos.
101 %description -l fr.UTF-8
102 OpenSSL est un outiil de gestion des certificats et les librairies
103 partagees qui fournit plusieurs protocoles et algorithmes de
104 codage/decodage, incluant DES, RC4, RSA et SSL.
106 %description -l pl.UTF-8
107 Implementacja protokołów kryptograficznych Secure Socket Layer (SSL)
108 v2/v3 oraz Transport Layer Security (TLS v1).
110 %description -l pt_BR.UTF-8
111 Uma biblioteca C que fornece vários algoritmos e protocolos
112 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas
113 compartilhadas e utilitários.
115 %description -l ru.UTF-8
116 Программа openssl для работы с сертификатами и разделяемые библиотеки,
117 которые реализуют множетсво криптографических алгоритмов, включая DES,
120 %description -l uk.UTF-8
121 Програма openssl для роботи з сертифікатами та бібліотеки спільного
122 користування, що реалізують велику кількість криптографічних
123 алгоритмів, включаючи DES, RC4, RSA та SSL.
126 Summary: OpenSSL optional crypto engines
127 Summary(pl.UTF-8): Opcjonalne silniki kryptograficzne dla OpenSSL-a
129 Requires: %{name} = %{version}-%{release}
132 With OpenSSL 0.9.6, a new component was added to support alternative
133 cryptography implementations, most commonly for interfacing with
134 external crypto devices (eg. accelerator cards). This component is
137 There are currently built-in ENGINE implementations for the following
146 In addition, dynamic binding to external ENGINE implementations is now
147 provided by a special ENGINE called "dynamic".
149 %description engines -l pl.UTF-8
150 Począwszy od OpenSSL-a 0.9.6 został dodany nowy komponent, mający
151 wspierać alternatywne implementacje kryptografii, przeważnie
152 współpracujące z zewnętrznymi urządzeniami kryptograficznymi (np.
153 kartami akceleratorów). Komponent ten jest nazywany SILNIKIEM (ang.
156 Obecnie istnieją wbudowane implementacje silników dla następujących
157 urządzeń kryptograficznych:
164 Ponadto zapewnione jest dynamiczne wiązanie dla zewnętrznych
165 implementacji silników poprzez specjalny silnik o nazwie "dynamic".
168 Summary: OpenSSL command line tool and utilities
169 Summary(pl.UTF-8): Zestaw narzędzi i skryptów
170 Group: Applications/Communications
171 Requires: %{name} = %{version}-%{release}
175 The OpenSSL Toolkit cmdline tool openssl and utility scripts.
177 %description tools -l pl.UTF-8
178 Zestaw narzędzi i skryptów wywoływanych z linii poleceń.
181 Summary: OpenSSL utilities written in Perl
182 Summary(pl.UTF-8): Narzędzia OpenSSL napisane w perlu
183 Group: Applications/Communications
184 Requires: %{name} = %{version}-%{release}
186 %description tools-perl
187 OpenSSL Toolkit tools written in Perl.
189 %description tools-perl -l pl.UTF-8
190 Narzędzia OpenSSL napisane w perlu.
193 Summary: Development part of OpenSSL Toolkit libraries
194 Summary(de.UTF-8): Secure Sockets Layer Kommunikationslibrary: statische libraries+header
195 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para desarrollo OpenSSL
196 Summary(fr.UTF-8): Librairies statiques, headers et utilitaires pour communication SSL
197 Summary(pl.UTF-8): Część bibiloteki OpenSSL przeznaczona dla programistów
198 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para desenvolvimento OpenSSL
199 Summary(ru.UTF-8): Библиотеки, хедеры и утилиты для Secure Sockets Layer
200 Summary(uk.UTF-8): Бібліотеки, хедери та утиліти для Secure Sockets Layer
201 Group: Development/Libraries
202 Requires: %{name} = %{version}-%{release}
203 Obsoletes: libopenssl0-devel
206 Development part of OpenSSL library.
208 %description devel -l es.UTF-8
209 Bibliotecas y archivos de inclusión para desarrollo OpenSSL
211 %description devel -l pl.UTF-8
212 Część biblioteki OpenSSL przeznaczona dla programistów.
214 %description devel -l pt_BR.UTF-8
215 Uma biblioteca C que fornece vários algoritmos e protocolos
216 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas e
217 arquivos de inclusão para desenvolvimento.
219 %description devel -l ru.UTF-8
220 Программа openssl для работы с сертификатами и разделяемые библиотеки,
221 которые реализуют множетсво криптографических алгоритмов, включая DES,
222 RC4, RSA и SSL. Включает библиотеки и хедеры для разработки приложений
223 с использованием SSL.
225 %description devel -l uk.UTF-8
226 Програма openssl для роботи з сертифікатами та бібліотеки спільного
227 користування, що реалізують велику кількість криптографічних
228 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить бібліотеки та
229 хедери для розробки програм з використанням SSL.
232 Summary: Static OpenSSL libraries
233 Summary(pl.UTF-8): Statyczne wersje bibliotek z OpenSSL
234 Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com openssl
235 Summary(ru.UTF-8): Статические библиотеки разработчика для OpenSSL
236 Summary(uk.UTF-8): Статичні бібліотеки програміста для OpenSSL
237 Group: Development/Libraries
238 Requires: %{name}-devel = %{version}-%{release}
241 Static OpenSSL Toolkit libraries.
243 %description static -l pl.UTF-8
244 Statyczne wersje bibliotek z OpenSSL.
246 %description static -l pt_BR.UTF-8
247 Bibliotecas estáticas para desenvolvimento com openssl.
249 %description static -l ru.UTF-8
250 Программа openssl для работы с сертификатами и разделяемые библиотеки,
251 которые реализуют множетсво криптографических алгоритмов, включая DES,
252 RC4, RSA и SSL. Включает статические библиотеки для разработки
253 приложений с использованием OpenSSL.
255 %description static -l uk.UTF-8
256 Програма openssl для роботи з сертифікатами та бібліотеки спільного
257 користування, що реалізують велику кількість криптографічних
258 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить статичні
259 бібліотеки для розробки програм з використанням SSL.
264 mv %{name}-OpenSSL_1_0_2-stable/* .
281 sed -i -e 's|\$prefix/\$libdir/engines|/%{_lib}/engines|g' Configure
286 %{__perl} util/perlpath.pl %{__perl}
288 OPTFLAGS="%{rpmcflags} %{rpmcppflags} %{?with_purify:-DPURIFY}" \
290 %{__perl} ./Configure \
291 --openssldir=%{_sysconfdir}/%{name} \
295 %{?with_sslv2:enable-ssl2}%{!?with_sslv2:no-ssl2} \
296 %{?with_sslv3:enable-ssl3}%{!?with_sslv3:no-ssl3} \
297 %{!?with_zlib:no-}zlib \
308 enable-ec_nistp_64_gcc_128 \
313 # ^- allow running on 80386 (default code uses bswapl available on i486+)
345 %ifarch armv4 armv5 armv5t armv5te armv5tel
349 v=$(awk -F= '/^VERSION/{print $2}' Makefile)
350 test "$v" = %{version}%{?with_snap:-dev}
352 %{__make} -j1 all rehash %{?with_tests:tests} \
354 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
355 INSTALLTOP=%{_prefix}
357 # Rename POD sources of man pages. "openssl_" prefix is added to each
358 # manpage to avoid potential conflicts with other packages.
360 for dir in doc/{apps,ssl,crypto}; do
362 %{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
364 for pod in !(openssl*).pod; do
365 mv -f $pod openssl_$pod;
371 rm -rf $RPM_BUILD_ROOT
372 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}} \
373 $RPM_BUILD_ROOT{%{_mandir}/{pl/man1,man{1,3,5,7}},%{_datadir}/ssl} \
374 $RPM_BUILD_ROOT/%{_lib}/engines \
375 $RPM_BUILD_ROOT%{_pkgconfigdir}
377 %{__make} -j1 install \
378 INSTALLTOP=%{_prefix} \
379 INSTALL_PREFIX=$RPM_BUILD_ROOT \
382 mv -f $RPM_BUILD_ROOT%{_libdir}/engines/* $RPM_BUILD_ROOT/%{_lib}/engines
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 -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc
390 # not installed as individual utilities (see openssl dgst instead)
391 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{dss1,md2,md4,md5,mdc2,ripemd160,sha,sha1,sha224,sha256,sha384,sha512}.1
393 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/pl/man1/openssl.1
394 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/ssl-certificate
395 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/c_rehash.sh
398 rm -rf $RPM_BUILD_ROOT
400 %post -p /sbin/ldconfig
401 %postun -p /sbin/ldconfig
403 %triggerpostun -- %{name}-tools < 1.0.0-5
404 # the hashing format has changed in 1.0.0
405 [ ! -x %{_sbindir}/update-ca-certificates ] || %{_sbindir}/update-ca-certificates --fresh || :
407 %triggerpostun -- %{name} < 0.9.8i-2
408 # don't do anything on --downgrade
409 if [ $1 -le 1 ]; then
412 if [ -d /var/lib/openssl/certs ] ; then
413 mv /var/lib/openssl/certs/* %{_sysconfdir}/%{name}/certs 2>/dev/null || :
415 if [ -d /var/lib/openssl/private ] ; then
416 mv /var/lib/openssl/private/* %{_sysconfdir}/%{name}/private 2>/dev/null || :
418 if [ -d /var/lib/openssl ] ; then
419 for f in /var/lib/openssl/* ; do
420 [ -f "$f" ] && mv "$f" %{_sysconfdir}/%{name} 2>/dev/null || :
422 rmdir /var/lib/openssl/* 2>/dev/null || :
423 rmdir /var/lib/openssl 2>/dev/null || :
427 %defattr(644,root,root,755)
428 %doc CHANGES CHANGES.SSLeay LICENSE NEWS README doc/*.txt
429 %attr(755,root,root) /%{_lib}/libcrypto.so.*.*.*
430 %attr(755,root,root) /%{_lib}/libssl.so.*.*.*
431 %dir %{_sysconfdir}/%{name}
432 %dir %{_sysconfdir}/%{name}/certs
433 %dir %attr(700,root,root) %{_sysconfdir}/%{name}/private
437 %defattr(644,root,root,755)
438 %dir /%{_lib}/engines
439 %attr(755,root,root) /%{_lib}/engines/*.so
442 %defattr(644,root,root,755)
443 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/openssl.cnf
444 %attr(755,root,root) %{_bindir}/c_rehash.sh
445 %attr(755,root,root) %{_bindir}/openssl
446 %attr(754,root,root) %{_bindir}/ssl-certificate
448 %dir %{_libdir}/%{name}
449 %attr(755,root,root) %{_libdir}/%{name}/CA.sh
450 %attr(755,root,root) %{_libdir}/%{name}/c_hash
451 %attr(755,root,root) %{_libdir}/%{name}/c_info
452 %attr(755,root,root) %{_libdir}/%{name}/c_issuer
453 %attr(755,root,root) %{_libdir}/%{name}/c_name
455 %{_mandir}/man1/openssl.1*
456 %{_mandir}/man1/openssl_asn1parse.1*
457 %{_mandir}/man1/openssl_ca.1*
458 %{_mandir}/man1/openssl_ciphers.1*
459 %{_mandir}/man1/openssl_cms.1*
460 %{_mandir}/man1/openssl_crl.1*
461 %{_mandir}/man1/openssl_crl2pkcs7.1*
462 %{_mandir}/man1/openssl_dgst.1*
463 %{_mandir}/man1/openssl_dhparam.1*
464 %{_mandir}/man1/openssl_dsa.1*
465 %{_mandir}/man1/openssl_dsaparam.1*
466 %{_mandir}/man1/openssl_ec.1*
467 %{_mandir}/man1/openssl_ecparam.1*
468 %{_mandir}/man1/openssl_enc.1*
469 %{_mandir}/man1/openssl_errstr.1*
470 %{_mandir}/man1/openssl_gendsa.1*
471 %{_mandir}/man1/openssl_genpkey.1*
472 %{_mandir}/man1/openssl_genrsa.1*
473 %{_mandir}/man1/openssl_nseq.1*
474 %{_mandir}/man1/openssl_ocsp.1*
475 %{_mandir}/man1/openssl_passwd.1*
476 %{_mandir}/man1/openssl_pkcs12.1*
477 %{_mandir}/man1/openssl_pkcs7.1*
478 %{_mandir}/man1/openssl_pkcs8.1*
479 %{_mandir}/man1/openssl_pkey.1*
480 %{_mandir}/man1/openssl_pkeyparam.1*
481 %{_mandir}/man1/openssl_pkeyutl.1*
482 %{_mandir}/man1/openssl_rand.1*
483 %{_mandir}/man1/openssl_req.1*
484 %{_mandir}/man1/openssl_rsa.1*
485 %{_mandir}/man1/openssl_rsautl.1*
486 %{_mandir}/man1/openssl_s_client.1*
487 %{_mandir}/man1/openssl_s_server.1*
488 %{_mandir}/man1/openssl_s_time.1*
489 %{_mandir}/man1/openssl_sess_id.1*
490 %{_mandir}/man1/openssl_smime.1*
491 %{_mandir}/man1/openssl_speed.1*
492 %{_mandir}/man1/openssl_spkac.1*
493 %{_mandir}/man1/openssl_ts.1*
494 %{_mandir}/man1/openssl_tsget.1*
495 %{_mandir}/man1/openssl_verify.1*
496 %{_mandir}/man1/openssl_version.1*
497 %{_mandir}/man1/openssl_x509.1*
498 %{_mandir}/man5/openssl_config.5*
499 %{_mandir}/man5/openssl_x509v3_config.5*
500 %lang(pl) %{_mandir}/pl/man1/openssl.1*
503 %defattr(644,root,root,755)
504 %attr(755,root,root) %{_bindir}/c_rehash
505 %attr(755,root,root) %{_libdir}/%{name}/CA.pl
506 %attr(755,root,root) %{_libdir}/%{name}/tsget
507 %{_mandir}/man1/openssl_CA.pl.1*
508 %{_mandir}/man1/openssl_c_rehash.1*
511 %defattr(644,root,root,755)
512 %attr(755,root,root) %{_libdir}/libcrypto.so
513 %attr(755,root,root) %{_libdir}/libssl.so
514 %{_includedir}/%{name}
515 %{_pkgconfigdir}/libcrypto.pc
516 %{_pkgconfigdir}/libssl.pc
517 %{_pkgconfigdir}/openssl.pc
518 %{_mandir}/man3/openssl*.3*
519 %{_mandir}/man7/openssl_des_modes.7*
522 %defattr(644,root,root,755)
523 %{_libdir}/libcrypto.a