Differences
This shows you the differences between two versions of the page.
force-enable-openssl-aes-ni-usage [2018-12-11 06:15 UTC] rm |
force-enable-openssl-aes-ni-usage [2023-02-27 16:57 UTC] (current) rm |
||
---|---|---|---|
Line 11: | Line 11: | ||
* https://mjanja.ch/2013/11/disabling-aes-ni-on-linux-openssl/ | * https://mjanja.ch/2013/11/disabling-aes-ni-on-linux-openssl/ | ||
- | I believe the syntax used there applies "xor" over the real flag values, e.g. ''OPENSSL_ia32cap="~0x200000200000000"'' to disable AES. But what if you need to force-enable it. Turns out the syntax working for that is simply: | + | I believe the syntax used there applies "xor" over the real flag values, e.g. ''OPENSSL_ia32cap="~0x200000200000000"'' to disable AES. But what if you need to force-enable it? Turns out the syntax working for that is simply: |
+ | |||
+ | * ''OPENSSL_ia32cap="+0x200000200000000"'' | ||
+ | |||
+ | ===== 2023-02 update ===== | ||
+ | A reader of this article has sent in the following update: | ||
+ | |||
+ | "The ''OPENSSL_ia32cap="+0x200000200000000"'' environment variable no longer works on recent OpenSSL versions. The plus sign has to be removed. | ||
+ | |||
+ | In fact, it never worked as you probably had intended. OpenSSL only ever supported the tilde mark (~) to remove or mask some bits, and never the plus sign (to add or enable some feature bits). It happened to work in previous versions because they used strtoul() which supports '+' sign. The value after the plus sign overwrites the cpuid, not adds to it. However, they changed to a custom parser in commit https://github.com/openssl/openssl/commit/b86d57bb0b23253c720db38ab18ca97cb888f701 and thus '+' is no longer supported. | ||
+ | |||
+ | I am not sure about the full consequences of setting cpuid to 0x200000200000000, because it apparently removes the MMX, SSE(2) and many other very basic features, although AES-NI is indeed enabled. More recent OpenSSL versions (like 3.0) prints the full ia32cap value when running "openssl speed". Maybe it is a better idea to override it with a value taken from a realistic CPU model." | ||
+ | |||
+ | ===== Original text ===== | ||
- | * <code>OPENSSL_ia32cap="+0x200000200000000"</code> | ||
Let's take one VPS box with the aforementioned problem. | Let's take one VPS box with the aforementioned problem. | ||
Line 65: | Line 77: | ||
But how to apply that to Tor? Well, for some initial testing I just chose to add the following line to /etc/init.d/tor (not using systemd here), right after ''"#! /bin/bash"'': | But how to apply that to Tor? Well, for some initial testing I just chose to add the following line to /etc/init.d/tor (not using systemd here), right after ''"#! /bin/bash"'': | ||
- | * <code>export OPENSSL_ia32cap="+0x200000200000000"</code> | + | * ''export OPENSSL_ia32cap="+0x200000200000000"'' |
(but this will get overwritten and removed by the next Tor version upgrade). | (but this will get overwritten and removed by the next Tor version upgrade). |
force-enable-openssl-aes-ni-usage.1544508902.txt.gz · Last modified: 2018-12-11 06:15 UTC (external edit)