随着Firefox 54的最近升级,我的自签名localhostSSL证书不再受到信任.
我一直在使用Firefox AutoConfigure脚本来安装此证书,该技术已经成功运行了好几年.Firefox使用自己的证书存储区,cert8.db其中包含证书,使用Firefox首选项,高级版,证书,查看证书,权限进行验证.
这在MacOS和Windows上都是可重现的.我附上了样本证书以供参考.这与我们安装的相同.
Firefox 54有什么变化?我查看了更改日志,但找不到任何特定于它如何信任证书的内容.
编辑:链接到Firefox错误,最有可能引入此更改:firefox #1294580
-----BEGIN CERTIFICATE-----
MIID/DCCAuSgAwIBAgIEDZj+fTANBgkqhkiG9w0BAQsFADCBmjELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlDYW5hc3RvdGExGzAZBgNVBAoTElFa
IEluZHVzdHJpZXMsIExMQzEbMBkGA1UECxMSUVogSW5kdXN0cmllcywgTExDMRww
GgYJKoZIhvcNAQkBFg1zdXBwb3J0QHF6LmlvMRIwEAYDVQQDEwlsb2NhbGhvc3Qw
HhcNMTcwMjEyMDMzMjEwWhcNMzcwMjEyMDMzMjEwWjCBmjELMAkGA1UEBhMCVVMx
CzAJBgNVBAgTAk5ZMRIwEAYDVQQHEwlDYW5hc3RvdGExGzAZBgNVBAoTElFaIElu
ZHVzdHJpZXMsIExMQzEbMBkGA1UECxMSUVogSW5kdXN0cmllcywgTExDMRwwGgYJ
KoZIhvcNAQkBFg1zdXBwb3J0QHF6LmlvMRIwEAYDVQQDEwlsb2NhbGhvc3QwggEi
MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCemwdWhvytOwhsRyEo/9ck3nKP
oBvMdkaiXKbMWlYZfYyb/EsJzw/LiEqGGhflWjneQLcgq0nuTtRaA9cm/vgPtVRX
OHewJeYBI2C4avJyjdFfQYHJKxuLi3nwmZ5JwcDm04H6SADwdyQuYB4AFr32uY5D
3id0gyDV+EX9sSOPThtdBpEbaBcFmAdAGdQUCzSJyi4Yu6UkIs7OPBHp9lOvm8VQ
r6ZVnqdFEXmxgpgMS0sQwDwZnBB3hFcVmE/sYy+2gV/h+yvRUjgqwC/SoLh9f4D0
eG19E3OEmsSyFM9K2Wl4ltOE/Aq1KFm7dPw34nDKxYcVDpm6JczWycbCi4zjAgMB
AAGjSDBGMCUGA1UdEQQeMByCCWxvY2FsaG9zdIIPbG9jYWxob3N0LnF6LmlvMB0G
A1UdDgQWBBT3Qs6/qQSmunLIGKQxz3GBO+RgIzANBgkqhkiG9w0BAQsFAAOCAQEA
lVI3sWr6wTtVtc7gsV9Kk99xNOUm5W2kp/Ot5CHvUIw68Ar1WIiouWT9BbjkvFc+
QpbtqKhluTdHI1/JP44r7A8qMApyYQLhw3AS/WTzRoOBOECJk3hYgGBIxAaoqvKY
HKCOULTqkoX8pgNhYobebn/BpeoSvXW+oxT21y7ElE01eMtrLsqXKaN5FODxVzJq
7jatxCaRZCy2Ki3R0cB5ZMIVvWSDeT1TLgh5UKWdldNsTdTNhbQSdm8ayU0uj4fH
tKqwh9lKvrBJiawghmADjZjeNEQzIJfjznF/soqVZnRNZO/phDH327lDE2UcD1IN
k4BqNRJmz5lrQeYz8GcfYA==
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud) 我现在已经在两台计算机上重现了这种症状,自从将计算机升级到macOS Mojave以来,cmake似乎不再寻找/usr/local/lib(或更恰当地是$(brew --prefix)/lib)由Homebrew提供的库。
尽管有一些方法可以避免这种情况(例如,使用EXECUTE_PROCESS; 搜索结果,然后将结果添加到LINK_LIBRARIES(...)命令中),但都没有理想的方法。莫哈韦沙漠(Mojave)发生了什么变化以打破这种行为?
临时解决方法是将以下内容添加到CMakeLists.txt:
# WARNING: Don't hard-code this path
LINK_DIRECTORIES(/usr/local/lib)
Run Code Online (Sandbox Code Playgroud)
我已经尝试brew doctor并更新了所有自制软件包,但无济于事。
cmake(make)显示的特定错误是:
ld: library not found for -l<somelib>
Run Code Online (Sandbox Code Playgroud)
从 macOS(10.16“Beta”/11.0)“Big Sur”开始,菜单栏和系统托盘不再支持桌面暗模式首选项,因此很难为此桌面正确设置系统托盘图标的主题。
以前,使用 shell 命令default read,可以检测到暗模式:
defaults read -g AppleInterfaceStyle
# "Dark"
Run Code Online (Sandbox Code Playgroud)
这对于检测 Window 主题仍然很有效,但它不适用于菜单栏和系统托盘主题。
由于这个区域似乎是由壁纸亮度/白度/亮度驱动的,我们如何检测暗系统托盘?
如何在(例如)Objective-C/C++ 中检测到这一点?欢迎任何解决方案,因为大多数解决方案都可以进行调整。
问题也发布到 Apple 开发者论坛:https : //developer.apple.com/forums/thread/652540
Qt5.6 有一个称为setIsMask(...)允许操作系统自动处理的功能。这实际上是一个别名NSImage::setTemplate:Yes
更多关于 macOS“黑暗模式”的参考:
采用OpenJDK上游错误报告:
关键词:NSStatusBar,Menu Bar Extras
JavaFX的文档状态,一个WebView当准备Worker.State.SUCCEEDED达到但是,除非你稍等片刻(即Animation,Transition,PauseTransition等等),一个空白页面的呈现方式。
这表明 WebView 内部发生了一个事件,准备捕获它,但它是什么?
GitHub 上SwingFXUtils.fromFXImage有7,000 多个代码片段使用,但其中大多数似乎与 无关WebView,是交互式的(人类掩盖了竞争条件)或使用了任意转换(从 100 毫秒到 2,000 毫秒的任何时间)。
我试过了:
changed(...)从WebView的维度内监听(高度和宽度属性DoubleProperty实现ObservableValue,可以监控这些东西)
runLater(...)在 FX 应用程序线程上盲目地讲述任何事情。
将 DOM 侦听器/触发器或 JavaScript 侦听器/触发器添加到 WebView
SUCCEEDED尽管捕获了空白,但在调用时 JavaScript 和 DOM 似乎都已正确加载。DOM/JavaScript 侦听器似乎没有帮助。使用AnimationorTransition有效地“睡眠”而不阻塞主 FX 线程。
什么时候打电话合适WebView.snapshot(...)?
用法:
SnapshotRaceCondition.initialize();
BufferedImage bufferedImage = …Run Code Online (Sandbox Code Playgroud) 当使用ant, 调用sun.awt.AppContext工作时,但是使用 AdaptOpenJDK11 使用 IntelliJ 编译的相同代码失败。
sun.awt.AppContext使用Oracle JDK8与 IntelliJ 配合使用sun.awt.AppContext采用AdoptOpenJDK11不适用于IntelliJ尽管 Sun/Oracle 已经警告过一段时间要避免使用这些sun.*包,但Java中的某些功能(错误?)仍然需要它们,而且很奇怪,命令行似乎很高兴。
示例代码:
package test;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import sun.awt.AppContext;
public class Main {
public static void main(String[] args) {
//Update printer list in CUPS immediately
AppContext.getAppContext().put(PrintServiceLookup.class.getDeclaredClasses()[0], null);
PrintService[] printers = PrintServiceLookup.lookupPrintServices(null, null);
for (PrintService p : printers) {
System.out.println(p.getName());
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何配置 IntelliJ 使其表现得像ant并允许访问sun.awt.* …
我目前分发Java应用程序,并pkgbuild在macOS上使用打包和签名。
苹果最近警告开发人员:
“在即将发布的macOS版本中,Gatekeeper将需要由开发人员ID签名的软件由Apple 进行公证。”
在阅读了经过公证的文档后,苹果警告开发人员:
“您必须启用强化的运行时,Apple才能对您的应用程序进行公证。”
其中详细介绍了如何在Xcode中启用这些设置。但是,那些不是用Xcode开发的应用程序呢? Xamarin / Mono对如何解决这个问题有来回回的意见,但是到目前为止,提交似乎集中在Mojave检测和C / C ++上。Java应用程序或不分发任何C / C ++ / Objective-C编译代码的应用程序呢?如何对项目进行“公证”,以便将来的macOS更新不会阻止项目?
我希望使用 Ivy 从 Maven Central 获取 JavaFX。
这可以获取 Java 依赖项,但不能获取本机依赖项。
预期的:
javafx-graphics-21.0.1.jarjavafx-graphics-21.0.1-linux.jar实际的:
javafx-graphics-21.0.1.jarjavafx-graphics-21.0.1-linux.jar我如何获取原生组件?
ivy.xml
<ivy-module version="2.0" xmlns:m="https://ant.apache.org/ivy/maven">
<info organisation="org.my" module="my-proj"/>
<dependencies>
<dependency org="org.openjfx" name="javafx-graphics" rev="21.0.1" />
</dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
ivy && ls ~/.ivy2/cache/org.openjfx/javafx-graphics/jars
# javafx-graphics-21.0.1.jar
Run Code Online (Sandbox Code Playgroud)
这是POM:https://repo1.maven.org/maven2/org/openjfx/javafx/20.0.1/javafx-20.0.1.pom
相关:如何使 Maven 在 linux 上请求正确的 javafx 依赖项
我添加maven-2标签是因为Ivy 使用 Maven 2 存储库:
在没有特定设置的情况下,Ivy 使用 Maven 2 存储库来解析您在 Ivy 文件中声明的依赖项。
java ×5
c++ ×2
javafx ×2
adoptopenjdk ×1
certificate ×1
cmake ×1
firefox ×1
hardening ×1
homebrew ×1
https ×1
ivy ×1
java-11 ×1
macos-mojave ×1
maven-2 ×1
objective-c ×1
openjdk-11 ×1
pkgbuild ×1
security ×1
ssl ×1
statusbar ×1
websocket ×1