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: neon < 0.29.6-8
70 Conflicts: openssh-clients < 2:6.2p2-3
71 Conflicts: openssh-server < 2:6.2p2-3
72 Conflicts: php53-common < 4:5.3.29-26
73 Conflicts: php55-common < 4:5.5.31-2
74 Conflicts: ruby-modules < 1:2.0.0.648-2
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/* .
285 sed -i -e 's|\$prefix/\$libdir/engines|/%{_lib}/engines|g' Configure
290 %{__perl} util/perlpath.pl %{__perl}
292 OPTFLAGS="%{rpmcflags} %{rpmcppflags} %{?with_purify:-DPURIFY}" \
294 %{__perl} ./Configure \
295 --openssldir=%{_sysconfdir}/%{name} \
299 %{!?with_sslv2:no-ssl2} \
300 %{!?with_sslv3:no-ssl3} \
301 %{!?with_zlib:no-}zlib \
312 enable-ec_nistp_64_gcc_128 \
317 # ^- allow running on 80386 (default code uses bswapl available on i486+)
349 %ifarch armv4 armv5 armv5t armv5te armv5tel
353 v=$(awk -F= '/^VERSION/{print $2}' Makefile)
354 test "$v" = %{version}%{?with_snap:-dev}
356 %{__make} -j1 all rehash %{?with_tests:tests} \
358 ASFLAG='$(CFLAG) -Wa,--noexecstack' \
359 INSTALLTOP=%{_prefix}
361 # Rename POD sources of man pages. "openssl_" prefix is added to each
362 # manpage to avoid potential conflicts with other packages.
364 for dir in doc/{apps,ssl,crypto}; do
366 %{__perl} -pi -e 's/(\W)((?<!openssl_)\w+)(\(\d\))/$1openssl_$2$3/g; s/openssl_openssl/openssl/g;' *.pod;
368 for pod in !(openssl*).pod; do
369 mv -f $pod openssl_$pod;
375 rm -rf $RPM_BUILD_ROOT
376 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/%{name},%{_libdir}/%{name}} \
377 $RPM_BUILD_ROOT{%{_mandir}/{pl/man1,man{1,3,5,7}},%{_datadir}/ssl} \
378 $RPM_BUILD_ROOT/%{_lib}/engines \
379 $RPM_BUILD_ROOT%{_pkgconfigdir}
381 %{__make} -j1 install \
382 INSTALLTOP=%{_prefix} \
383 INSTALL_PREFIX=$RPM_BUILD_ROOT \
386 mv -f $RPM_BUILD_ROOT%{_libdir}/engines/* $RPM_BUILD_ROOT/%{_lib}/engines
387 mv -f $RPM_BUILD_ROOT%{_libdir}/lib*.so.*.* $RPM_BUILD_ROOT/%{_lib}
388 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libcrypto.*.*) $RPM_BUILD_ROOT%{_libdir}/libcrypto.so
389 ln -sf /%{_lib}/$(basename $RPM_BUILD_ROOT/%{_lib}/libssl.*.*) $RPM_BUILD_ROOT%{_libdir}/libssl.so
391 mv -f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc/* $RPM_BUILD_ROOT%{_libdir}/%{name}
392 rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/misc
394 # not installed as individual utilities (see openssl dgst instead)
395 %{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{dss1,md2,md4,md5,mdc2,ripemd160,sha,sha1,sha224,sha256,sha384,sha512}.1
397 cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_mandir}/pl/man1/openssl.1
398 install -p %{SOURCE3} $RPM_BUILD_ROOT%{_bindir}/ssl-certificate
399 install -p %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/c_rehash.sh
402 rm -rf $RPM_BUILD_ROOT
404 %post -p /sbin/ldconfig
405 %postun -p /sbin/ldconfig
407 %triggerpostun -- %{name}-tools < 1.0.0-5
408 # the hashing format has changed in 1.0.0
409 [ ! -x %{_sbindir}/update-ca-certificates ] || %{_sbindir}/update-ca-certificates --fresh || :
411 %triggerpostun -- %{name} < 0.9.8i-2
412 # don't do anything on --downgrade
413 if [ $1 -le 1 ]; then
416 if [ -d /var/lib/openssl/certs ] ; then
417 mv /var/lib/openssl/certs/* %{_sysconfdir}/%{name}/certs 2>/dev/null || :
419 if [ -d /var/lib/openssl/private ] ; then
420 mv /var/lib/openssl/private/* %{_sysconfdir}/%{name}/private 2>/dev/null || :
422 if [ -d /var/lib/openssl ] ; then
423 for f in /var/lib/openssl/* ; do
424 [ -f "$f" ] && mv "$f" %{_sysconfdir}/%{name} 2>/dev/null || :
426 rmdir /var/lib/openssl/* 2>/dev/null || :
427 rmdir /var/lib/openssl 2>/dev/null || :
431 %defattr(644,root,root,755)
432 %doc CHANGES CHANGES.SSLeay LICENSE NEWS README doc/*.txt
433 %attr(755,root,root) /%{_lib}/libcrypto.so.*.*.*
434 %attr(755,root,root) /%{_lib}/libssl.so.*.*.*
435 %dir %{_sysconfdir}/%{name}
436 %dir %{_sysconfdir}/%{name}/certs
437 %dir %attr(700,root,root) %{_sysconfdir}/%{name}/private
441 %defattr(644,root,root,755)
442 %dir /%{_lib}/engines
443 %attr(755,root,root) /%{_lib}/engines/*.so
446 %defattr(644,root,root,755)
447 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/openssl.cnf
448 %attr(755,root,root) %{_bindir}/c_rehash.sh
449 %attr(755,root,root) %{_bindir}/openssl
450 %attr(754,root,root) %{_bindir}/ssl-certificate
452 %dir %{_libdir}/%{name}
453 %attr(755,root,root) %{_libdir}/%{name}/CA.sh
454 %attr(755,root,root) %{_libdir}/%{name}/c_hash
455 %attr(755,root,root) %{_libdir}/%{name}/c_info
456 %attr(755,root,root) %{_libdir}/%{name}/c_issuer
457 %attr(755,root,root) %{_libdir}/%{name}/c_name
459 %{_mandir}/man1/openssl.1*
460 %{_mandir}/man1/openssl_asn1parse.1*
461 %{_mandir}/man1/openssl_ca.1*
462 %{_mandir}/man1/openssl_ciphers.1*
463 %{_mandir}/man1/openssl_cms.1*
464 %{_mandir}/man1/openssl_crl.1*
465 %{_mandir}/man1/openssl_crl2pkcs7.1*
466 %{_mandir}/man1/openssl_dgst.1*
467 %{_mandir}/man1/openssl_dhparam.1*
468 %{_mandir}/man1/openssl_dsa.1*
469 %{_mandir}/man1/openssl_dsaparam.1*
470 %{_mandir}/man1/openssl_ec.1*
471 %{_mandir}/man1/openssl_ecparam.1*
472 %{_mandir}/man1/openssl_enc.1*
473 %{_mandir}/man1/openssl_errstr.1*
474 %{_mandir}/man1/openssl_gendsa.1*
475 %{_mandir}/man1/openssl_genpkey.1*
476 %{_mandir}/man1/openssl_genrsa.1*
477 %{_mandir}/man1/openssl_nseq.1*
478 %{_mandir}/man1/openssl_ocsp.1*
479 %{_mandir}/man1/openssl_passwd.1*
480 %{_mandir}/man1/openssl_pkcs12.1*
481 %{_mandir}/man1/openssl_pkcs7.1*
482 %{_mandir}/man1/openssl_pkcs8.1*
483 %{_mandir}/man1/openssl_pkey.1*
484 %{_mandir}/man1/openssl_pkeyparam.1*
485 %{_mandir}/man1/openssl_pkeyutl.1*
486 %{_mandir}/man1/openssl_rand.1*
487 %{_mandir}/man1/openssl_req.1*
488 %{_mandir}/man1/openssl_rsa.1*
489 %{_mandir}/man1/openssl_rsautl.1*
490 %{_mandir}/man1/openssl_s_client.1*
491 %{_mandir}/man1/openssl_s_server.1*
492 %{_mandir}/man1/openssl_s_time.1*
493 %{_mandir}/man1/openssl_sess_id.1*
494 %{_mandir}/man1/openssl_smime.1*
495 %{_mandir}/man1/openssl_speed.1*
496 %{_mandir}/man1/openssl_spkac.1*
497 %{_mandir}/man1/openssl_ts.1*
498 %{_mandir}/man1/openssl_tsget.1*
499 %{_mandir}/man1/openssl_verify.1*
500 %{_mandir}/man1/openssl_version.1*
501 %{_mandir}/man1/openssl_x509.1*
502 %{_mandir}/man5/openssl_config.5*
503 %{_mandir}/man5/openssl_x509v3_config.5*
504 %lang(pl) %{_mandir}/pl/man1/openssl.1*
507 %defattr(644,root,root,755)
508 %attr(755,root,root) %{_bindir}/c_rehash
509 %attr(755,root,root) %{_libdir}/%{name}/CA.pl
510 %attr(755,root,root) %{_libdir}/%{name}/tsget
511 %{_mandir}/man1/openssl_CA.pl.1*
512 %{_mandir}/man1/openssl_c_rehash.1*
515 %defattr(644,root,root,755)
516 %attr(755,root,root) %{_libdir}/libcrypto.so
517 %attr(755,root,root) %{_libdir}/libssl.so
518 %{_includedir}/%{name}
519 %{_pkgconfigdir}/libcrypto.pc
520 %{_pkgconfigdir}/libssl.pc
521 %{_pkgconfigdir}/openssl.pc
522 %{_mandir}/man3/openssl*.3*
523 %{_mandir}/man7/openssl_des_modes.7*
526 %defattr(644,root,root,755)
527 %{_libdir}/libcrypto.a