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
16 %include /usr/lib/rpm/macros.perl
17 Summary: OpenSSL Toolkit libraries for the "Secure Sockets Layer" (SSL v2/v3)
18 Summary(de.UTF-8): Secure Sockets Layer (SSL)-Kommunikationslibrary
19 Summary(es.UTF-8): Biblioteca C que suministra algoritmos y protocolos criptográficos
20 Summary(fr.UTF-8): Utilitaires de communication SSL (Secure Sockets Layer)
21 Summary(pl.UTF-8): Biblioteki OpenSSL (SSL v2/v3)
22 Summary(pt_BR.UTF-8): Uma biblioteca C que fornece vários algoritmos e protocolos criptográficos
23 Summary(ru.UTF-8): Библиотеки и утилиты для соединений через Secure Sockets Layer
24 Summary(uk.UTF-8): Бібліотеки та утиліти для з'єднань через Secure Sockets Layer
26 # 1.0.2 will be LTS release
27 # Version 1.0.2 will be supported until 2019-12-31.
28 # https://www.openssl.org/about/releasestrat.html
34 #Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz
35 Source0: https://www.openssl.org/source/%{name}-%{version}-%{subver}.tar.gz
36 # Source0-md5: 5073f45b5922992234396c7d8247196f
38 Source1: https://github.com/openssl/openssl/archive/OpenSSL_1_0_2-stable/%{name}-%{version}-dev.tar.gz
41 Source3: %{name}-ssl-certificate.sh
42 Source4: %{name}-c_rehash.sh
43 Patch0: %{name}-alpha-ccc.patch
44 Patch1: %{name}-optflags.patch
45 Patch2: %{name}-include.patch
46 Patch3: %{name}-man-namespace.patch
47 Patch4: %{name}-asflag.patch
48 Patch5: %{name}-ca-certificates.patch
49 Patch6: %{name}-ldflags.patch
50 Patch7: %{name}-find.patch
52 Patch10: %{name}_fix_for_x32.patch
53 Patch11: engines-dir.patch
54 URL: http://www.openssl.org/
56 BuildRequires: perl-devel >= 1:5.10.0
57 BuildRequires: rpm-perlprov >= 4.1-13
58 BuildRequires: rpmbuild(macros) >= 1.213
59 BuildRequires: sed >= 4.0
60 Requires: ca-certificates >= 20120623-1.1
61 Requires: rpm-whiteout >= 1.7
63 Obsoletes: SSLeay-devel
64 Obsoletes: SSLeay-perl
65 Obsoletes: libopenssl0
66 %if "%{pld_release}" == "ac"
67 Conflicts: neon < 0.26.3-3
68 Conflicts: ntpd < 4.2.4p8-10
69 Conflicts: openssh-clients < 2:5.8p1-9
70 Conflicts: openssh-server < 2:5.8p1-9
72 Conflicts: neon < 0.29.6-8
73 Conflicts: openssh-clients < 2:6.2p2-3
74 Conflicts: openssh-server < 2:6.2p2-3
76 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
79 The OpenSSL Project is a collaborative effort to develop a robust,
80 commercial-grade, full-featured, and Open Source toolkit implementing
81 the Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS
82 v1) protocols with full-strength cryptography world-wide. The project
83 is managed by a worldwide community of volunteers that use the
84 Internet to communicate, plan, and develop the OpenSSL tookit and its
85 related documentation.
87 OpenSSL is based on the excellent SSLeay library developed by Eric A.
88 Young and Tim J. Hudson. The OpenSSL toolkit is licensed under an
89 Apache-style licence, which basically means that you are free to get
90 and use it for commercial and non-commercial purposes subject to some
91 simple license conditions.
93 This package contains shared libraries only, install openssl-tools if
94 you want to use openssl cmdline tool.
96 %description -l de.UTF-8
97 Openssl enthält das OpenSSL Zertifikatsmanagementtool und shared
98 libraries, die verschiedene Verschlüsselungs- und
99 Entschlüsselungsalgorithmen und -protokolle, wie DES, RC4, RSA und SSL
100 zur Verfügung stellen.
102 %description -l es.UTF-8
103 Biblioteca C que suministra algoritmos y protocolos criptográficos.
105 %description -l fr.UTF-8
106 OpenSSL est un outiil de gestion des certificats et les librairies
107 partagees qui fournit plusieurs protocoles et algorithmes de
108 codage/decodage, incluant DES, RC4, RSA et SSL.
110 %description -l pl.UTF-8
111 Implementacja protokołów kryptograficznych Secure Socket Layer (SSL)
112 v2/v3 oraz Transport Layer Security (TLS v1).
114 %description -l pt_BR.UTF-8
115 Uma biblioteca C que fornece vários algoritmos e protocolos
116 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas
117 compartilhadas e utilitários.
119 %description -l ru.UTF-8
120 Программа openssl для работы с сертификатами и разделяемые библиотеки,
121 которые реализуют множетсво криптографических алгоритмов, включая DES,
124 %description -l uk.UTF-8
125 Програма openssl для роботи з сертифікатами та бібліотеки спільного
126 користування, що реалізують велику кількість криптографічних
127 алгоритмів, включаючи DES, RC4, RSA та SSL.
130 Summary: OpenSSL optional crypto engines
131 Summary(pl.UTF-8): Opcjonalne silniki kryptograficzne dla OpenSSL-a
133 Requires: %{name} = %{version}-%{release}
136 With OpenSSL 0.9.6, a new component was added to support alternative
137 cryptography implementations, most commonly for interfacing with
138 external crypto devices (eg. accelerator cards). This component is
141 There are currently built-in ENGINE implementations for the following
150 In addition, dynamic binding to external ENGINE implementations is now
151 provided by a special ENGINE called "dynamic".
153 %description engines -l pl.UTF-8
154 Począwszy od OpenSSL-a 0.9.6 został dodany nowy komponent, mający
155 wspierać alternatywne implementacje kryptografii, przeważnie
156 współpracujące z zewnętrznymi urządzeniami kryptograficznymi (np.
157 kartami akceleratorów). Komponent ten jest nazywany SILNIKIEM (ang.
160 Obecnie istnieją wbudowane implementacje silników dla następujących
161 urządzeń kryptograficznych:
168 Ponadto zapewnione jest dynamiczne wiązanie dla zewnętrznych
169 implementacji silników poprzez specjalny silnik o nazwie "dynamic".
172 Summary: OpenSSL command line tool and utilities
173 Summary(pl.UTF-8): Zestaw narzędzi i skryptów
174 Group: Applications/Communications
175 Requires: %{name} = %{version}-%{release}
179 The OpenSSL Toolkit cmdline tool openssl and utility scripts.
181 %description tools -l pl.UTF-8
182 Zestaw narzędzi i skryptów wywoływanych z linii poleceń.
185 Summary: OpenSSL utilities written in Perl
186 Summary(pl.UTF-8): Narzędzia OpenSSL napisane w perlu
187 Group: Applications/Communications
188 Requires: %{name} = %{version}-%{release}
190 %description tools-perl
191 OpenSSL Toolkit tools written in Perl.
193 %description tools-perl -l pl.UTF-8
194 Narzędzia OpenSSL napisane w perlu.
197 Summary: Development part of OpenSSL Toolkit libraries
198 Summary(de.UTF-8): Secure Sockets Layer Kommunikationslibrary: statische libraries+header
199 Summary(es.UTF-8): Bibliotecas y archivos de inclusión para desarrollo OpenSSL
200 Summary(fr.UTF-8): Librairies statiques, headers et utilitaires pour communication SSL
201 Summary(pl.UTF-8): Część bibiloteki OpenSSL przeznaczona dla programistów
202 Summary(pt_BR.UTF-8): Bibliotecas e arquivos de inclusão para desenvolvimento OpenSSL
203 Summary(ru.UTF-8): Библиотеки, хедеры и утилиты для Secure Sockets Layer
204 Summary(uk.UTF-8): Бібліотеки, хедери та утиліти для Secure Sockets Layer
205 Group: Development/Libraries
206 Requires: %{name} = %{version}-%{release}
207 Obsoletes: libopenssl0-devel
210 Development part of OpenSSL library.
212 %description devel -l es.UTF-8
213 Bibliotecas y archivos de inclusión para desarrollo OpenSSL
215 %description devel -l pl.UTF-8
216 Część biblioteki OpenSSL przeznaczona dla programistów.
218 %description devel -l pt_BR.UTF-8
219 Uma biblioteca C que fornece vários algoritmos e protocolos
220 criptográficos, incluindo DES, RC4, RSA e SSL. Inclui bibliotecas e
221 arquivos de inclusão para desenvolvimento.
223 %description devel -l ru.UTF-8
224 Программа openssl для работы с сертификатами и разделяемые библиотеки,
225 которые реализуют множетсво криптографических алгоритмов, включая DES,
226 RC4, RSA и SSL. Включает библиотеки и хедеры для разработки приложений
227 с использованием SSL.
229 %description devel -l uk.UTF-8
230 Програма openssl для роботи з сертифікатами та бібліотеки спільного
231 користування, що реалізують велику кількість криптографічних
232 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить бібліотеки та
233 хедери для розробки програм з використанням SSL.
236 Summary: Static OpenSSL libraries
237 Summary(pl.UTF-8): Statyczne wersje bibliotek z OpenSSL
238 Summary(pt_BR.UTF-8): Bibliotecas estáticas para desenvolvimento com openssl
239 Summary(ru.UTF-8): Статические библиотеки разработчика для OpenSSL
240 Summary(uk.UTF-8): Статичні бібліотеки програміста для OpenSSL
241 Group: Development/Libraries
242 Requires: %{name}-devel = %{version}-%{release}
245 Static OpenSSL Toolkit libraries.
247 %description static -l pl.UTF-8
248 Statyczne wersje bibliotek z OpenSSL.
250 %description static -l pt_BR.UTF-8
251 Bibliotecas estáticas para desenvolvimento com openssl.
253 %description static -l ru.UTF-8
254 Программа openssl для работы с сертификатами и разделяемые библиотеки,
255 которые реализуют множетсво криптографических алгоритмов, включая DES,
256 RC4, RSA и SSL. Включает статические библиотеки для разработки
257 приложений с использованием OpenSSL.
259 %description static -l uk.UTF-8
260 Програма openssl для роботи з сертифікатами та бібліотеки спільного
261 користування, що реалізують велику кількість криптографічних
262 алгоритмів, включаючи DES, RC4, RSA та SSL. Містить статичні
263 бібліотеки для розробки програм з використанням SSL.
268 mv %{name}-OpenSSL_1_0_2-stable/* .
270 %setup -q %{?subver:-n %{name}-%{version}-%{subver}}
272 #%patch0 -p1 # alpha patch from year 2000 - drop it
273 #%patch1 -p1 # flags list has been nuked (thank god!)
274 #%patch2 -p1 # openssl include subdir. check this
275 #%patch3 -p1 # patched Makefile.org no longer exists
276 #%patch4 -p1 # patched Makefile.org no longer exists
278 #%patch6 -p1 # patched Makefile.org no longer exists
289 # util/perlpath.pl no longer exists
290 #%{__perl} util/perlpath.pl %{__perl}
292 OPTFLAGS="%{rpmcflags} %{rpmcppflags} %{?with_purify:-DPURIFY}" \
294 %{__perl} ./Configure \
295 --prefix=%{_prefix} \
296 --openssldir=%{_sysconfdir}/%{name} \
300 %{?with_sslv2:enable-ssl2}%{!?with_sslv2:no-ssl2} \
301 %{?with_sslv3:enable-ssl3}%{!?with_sslv3:no-ssl3} \
302 %{!?with_zlib:no-}zlib \
311 enable-ec_nistp_64_gcc_128 \
316 # ^- allow running on 80386 (default code uses bswapl available on i486+)
348 %ifarch armv4 armv5 armv5t armv5te armv5tel
352 v=$(awk -F= '/^VERSION/{print $2}' Makefile)
353 test "$v" = %{version}%{?subver:-%{subver}}%{?with_snap:-dev}
355 %{__make} -j1 all rehash %{?with_tests:tests} \
357 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
358 INSTALLTOP=%{_prefix}
360 # Rename POD sources of man pages. "openssl_" prefix is added to each
361 # manpage to avoid potential conflicts with other packages.
363 for dir in doc/{apps,ssl,crypto}; do
365 %{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
367 for pod in !(openssl*).pod; do
368 mv -f $pod openssl_$pod;
374 rm -rf $RPM_BUILD_ROOT
375 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}} \
376 $RPM_BUILD_ROOT{%{_mandir}/{pl/man1,man{1,3,5,7}},%{_datadir}/ssl} \
377 $RPM_BUILD_ROOT/%{_lib}/engines \
378 $RPM_BUILD_ROOT%{_pkgconfigdir}
380 %{__make} -j1 install \
381 INSTALLTOP=%{_prefix} \
382 INSTALL_PREFIX=$RPM_BUILD_ROOT \
385 mv -f $RPM_BUILD_ROOT%{_libdir}/engines/* $RPM_BUILD_ROOT/%{_lib}/engines
386 mv -f $RPM_BUILD_ROOT%{_libdir}/lib*.so.*.* $RPM_BUILD_ROOT/%{_lib}
387 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcrypto.*.*) $RPM_BUILD_ROOT%{_libdir}/libcrypto.so
388 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libssl.*.*) $RPM_BUILD_ROOT%{_libdir}/libssl.so
390 mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc/* $RPM_BUILD_ROOT%{_libdir}/%{name}
391 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc
393 # not installed as individual utilities (see openssl dgst instead)
394 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{dss1,md2,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 CHANGES.SSLeay 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
442 %attr(755,root,root) /%{_lib}/engines/*.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
521 %{_mandir}/man3/openssl*.3*
522 %{_mandir}/man7/openssl_des_modes.7*
525 %defattr(644,root,root,755)
526 %{_libdir}/libcrypto.a